Powershell / Perl:将多个CSV文件合并为一个?

我有以下CSV文件,我想将它们合并为一个CSV

01.csv

apples,48,12,7
pear,17,16,2
orange,22,6,1

02.csv

apples,51,8,6
grape,87,42,12
pear,3,7

03.csv

apples,11,13
grape,81,5,8
pear,6

04.csv

apples,14,8
orange,7,9

期望的输出

apples,13,8
grape,pear,2,orange,1,9

谁能提供如何实现这一目标的指导?最好使用Powershell,但如果更容易,可以使用Perl等替代品.

感谢Pantik,您的代码输出接近我想要的:

apples,9
pear,6

不幸的是,我需要“占位符”逗号,以便当条目不存在于CSV文件中时,例如橙色,9而不是橙色,9

更新:我想按文件名的顺序解析这些,例如:

$myFiles = @(gci *.csv) | sort Name
foreach ($file in $myFiles){

问候
摊晒

解决方法

这是我的Perl版本:
use strict;
use warnings;

my $filenum = 0;

my ( %fruits,%data );
foreach my $file ( sort glob("*.csv") ) {

    $filenum++;
    open my $fh,"<",$file or die $!;

    while ( my $line = <$fh> ) {

        chomp $line;

        my ( $fruit,@values ) = split /,/,$line;

        $fruits{$fruit} = 1;

        $data{$filenum}{$fruit} = \@values;
    }

    close $fh;
}
foreach my $fruit ( sort keys %fruits ) {

    print $fruit,",join( ",map { $data{$_}{$fruit} ? @{ $data{$_}{$fruit} } : "," } 1 .. $filenum ),"\n";
}

这给了我:

apples,

所以你有葡萄的错字或我误解了什么?

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...