我是 Perl 的新手,很抱歉这个简单的问题。
我有一个生成 7 个 csv 文件的 Perl 脚本。所有这些文件都有 8 个常见的列标题。
文件名将是不变的,每个文件只有 8 列,并且每列的每个值中总会有数据。
每个文件的大小永远不会超过 400k。
我想使用 Perl 将这些 csv 文件合并到一个文件中。输出将具有相同的列标题和来自所有 7 个文件的数据。
如果你在某种 Unix 上,你可以使用tail
.
$ tail -qn +2 fileA fileB ...
-q
抑制输出中的文件名;从第-n +2
2 行开始输出。
还要获取标题:
$ (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 ...