Powershell / Perl:将多个CSV文件合并为一个?
发布时间:2020-12-15 22:06:46 所属栏目:大数据 来源:网络整理
导读:我有以下CSV文件,我想将它们合并为一个CSV 01.csv apples,48,12,7pear,17,16,2orange,22,6,1 02.csv apples,51,8,6grape,87,42,12pear,3,7 03.csv apples,11,13grape,81,5,8pear,6 04.csv apples,14,8orange,7,9 期望的输出: apples,13,8grape,pear,2,orang
我有以下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, 所以你有葡萄的错字或我误解了什么? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |