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

合并许多大型CSV文件(在Linux中),linux,unix,csv,awk,Linux,Unix,Csv,Awk,我有大约500个CSV文件,每个文件有5000行和1000列(~20Mb)。我想按列添加它们并另存为一个大的CSV文件 此前的一篇文章部分回答了这一问题。 但是有没有一种不用写出每个文件名的方法呢?如果有帮助,我的文件按顺序命名(例如,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 我们希望以逗号分隔的格式逐行合

我有大约500个CSV文件,每个文件有5000行和1000列(~20Mb)。我想按列添加它们并另存为一个大的CSV文件

此前的一篇文章部分回答了这一问题。


但是有没有一种不用写出每个文件名的方法呢?如果有帮助,我的文件按顺序命名(例如,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,
告诉
粘贴
在合并文件时使用逗号作为分隔符。在
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

你可以使用纽约证券交易所的mcmd。只需一行命令:

mcat i=X*.csv o=output.csv

你刚才教给我的东西太棒了,我必须不时地合并大型日志文件,我的朋友,这是我的财富!