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

Rno*_*oob 3 unix linux csv awk

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

之前的一篇文章部分回答了这个问题。 awk 按列合并多个 csv 文件,不匹配

但是有没有一种方法可以做到这一点而不必写出每个文件名?我的文件按顺序命名(例如,X1.csv、X2.csv、X3.csv、...、X500.csv),如果有帮助的话。

Joh*_*024 5

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

$ cat X1.csv
A,B
A,B
A,B
$ cat X2.csv
C
C
C
$ cat X3.csv
D
D
D
Run Code Online (Sandbox Code Playgroud)

我们希望以逗号分隔的格式逐行合并它们,而不命名每个文件:

$ paste -d, X{1..3}.csv
A,B,C,D
A,B,C,D
A,B,C,D
Run Code Online (Sandbox Code Playgroud)

-d,告诉paste合并文件时使用逗号作为分隔符。在 下bash,表达式X{1..3}.csv扩展为按数字顺序排列的文件序列。

如果您有 500 个这样的文件,则命令将是:

 paste -d, X{1..500}.csv
Run Code Online (Sandbox Code Playgroud)

要将输出保存到文件:

 paste -d, X{1..500}.csv >merged.csv
Run Code Online (Sandbox Code Playgroud)