我有500个CSV文件,每个文件有5000行和1000列(〜20Mb)。 我想追加他们列明智和保存为一个大的CSV文件。
以前的post部分回答了这个。 合并多个csv文件awk列明智,没有匹配
但有没有办法做到这一点,而不必写出每个文件名? 我的文件是顺序名称(例如,X1.csv,X2.csv,X3.csv,…,X500.csv),如果有帮助。
举一个例子,假设有三个这样的文件:
$ cat X1.csv A,B A,B A,B $ cat X2.csv C C C $ cat X3.csv D D D
我们希望以逗号分隔的格式逐行合并它们,而不用命名每个文件:
$ paste -d, X{1..3}.csv A,B,C,D A,B,C,D A,B,C,D
-d,
告诉paste
在合并文件时使用逗号作为分隔符。 在bash
,表达式X{1..3}.csv
以数字顺序扩展为文件序列。
如果你有500个这样的文件,命令将是:
paste -d, X{1..500}.csv
将输出保存到文件:
paste -d, X{1..500}.csv >merged.csv
通过以下shell脚本,您可以反复缩小命名文件,
#!/bin/sh a=500 while [ $a -gt 500 ] do paste -d' ' Xtemp X$a > Xtemp a=`expr $a + 1` done
你可以使用Nysol的mcmd。 只需一行命令:
mcat i=X*.csv o=output.csv