合并许多大型 CSV 文件(在 Linux 中)
Merge many large CSV files (in Linux)
我有大约 500 个 CSV 文件,每个文件有 5000 行和 1000 列 (~20Mb)。我想按列附加它们并保存为一个大的 CSV 文件。
之前的 post 部分回答了这个问题。
Merge multiple csv files awk column-wise, no match
但是有没有办法不用写出每个文件名就可以做到这一点?我的文件按顺序命名(例如,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
我有大约 500 个 CSV 文件,每个文件有 5000 行和 1000 列 (~20Mb)。我想按列附加它们并保存为一个大的 CSV 文件。
之前的 post 部分回答了这个问题。 Merge multiple csv files awk column-wise, no match
但是有没有办法不用写出每个文件名就可以做到这一点?我的文件按顺序命名(例如,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