合并很多大型CSV文件(在Linux中)

我有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 

http://www.nysol.sakura.ne.jp/mcmd2/en/sect-mcat.html