0

我是 Perl 的新手,很抱歉这个简单的问题。

我有一个生成 7 个 csv 文件的 Perl 脚本。所有这些文件都有 8 个常见的列标题。

文件名将是不变的,每个文件只有 8 列,并且每列的每个值中总会有数据。

每个文件的大小永远不会超过 400k。

我想使用 Perl 将这些 csv 文件合并到一个文件中。输出将具有相同的列标题和来自所有 7 个文件的数据。

4

1 回答 1

6

如果你在某种 Unix 上,你可以使用tail.

$ tail -qn +2 fileA fileB ...

-q抑制输出中的文件名;从第-n +22 行开始输出。

还要获取标题:

$ (head -n 1 fileA; tail -qn +2 fileA fileB ...) > output-file

如果你需要使用 Perl:

use strict; use warnings; use autodie;
my $files = $#ARGV; # get number of files - 1
while (my $file = shift @ARGV) {
  open my $fh, "<", $file;
  <$fh> unless $files == @ARGV; # discard header unless first file
  print while <$fh>; # output the rest
}

然后:$ perl the-script.pl fileA fileB ...

于 2013-08-01T13:16:08.240 回答