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

时间:2015-02-02 04:34:03

标签: linux unix csv awk

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

之前的帖子部分回答了这个问题。 Merge multiple csv files awk column-wise, no match

但有没有办法在不写出每个文件名的情况下做到这一点?我的文件是顺序名称(例如,X1.csv,X2.csv,X3.csv,...,X500.csv),如果这有帮助的话。

3 个答案:

答案 0 :(得分:4)

举个例子,假设有三个这样的文件:

$ 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

答案 1 :(得分:2)

您可以使用Nysol的mcmd。只需一行命令:

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

IBM Connections API description

答案 2 :(得分:0)

使用以下shell脚本,您可以重复缩小命名文件,

#!/bin/sh

a=500

while [ $a -gt 500 ]
do
   paste -d' ' Xtemp X$a > Xtemp
   a=`expr $a + 1`
done