【发布时间】:2011-05-14 02:43:41
【问题描述】:
我有以下 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,22,3,7
03.csv
apples,11,12,13
grape,81,5,8
pear,11,5,6
04.csv
apples,14,12,8
orange,5,7,9
期望的输出:
apples,48,12,7,51,8,6,11,12,13,14,12,8
grape,,,87,42,12,81,5,8,,,
pear,17,16,2,22,3,7,11,5,6,,,
orange,22,6,1,,,,,,5,7,9
任何人都可以就如何实现这一目标提供指导吗?最好使用 Powershell,但如果这样更容易,也可以使用 Perl 等替代方案。
感谢 Pantik,您的代码输出接近我想要的:
apples,48,12,7,51,8,6,11,12,13,14,12,8
grape,87,42,12,81,5,8
orange,22,6,1,5,7,9
pear,17,16,2,22,3,7,11,5,6
不幸的是,当条目不存在于 CSV 文件中时,我需要使用“占位符”逗号,例如橙色,22,6,1,,,,,,5,7,9 而不是橙色,22,6,1,5,7,9
更新:我希望按照文件名的顺序解析这些,例如:
$myFiles = @(gci *.csv) | sort Name
foreach ($file in $myFiles){
问候 泰德
【问题讨论】:
-
看起来您想要按文件名排序的数据。例如,您在
orange中有来自2.csv和3.csv的空记录。如果这是一项要求,您应该将其添加到问题中。
标签: perl powershell