命令行工具 GoCSV 有许多用于组合多个 CSV 的命令。
我认为可能对您有所帮助的两个是 stack 将 CSV 相互叠加,zip 并排添加 CSV。
堆栈
对于这两个输入 CSV:
input1.csv input2.csv
H1,H2 H1,H2
A, 1 C, 3
B, 2 D, 4
当我运行gocsv stack input1.csv input2.csv 时,它会写入 input1.csv,然后将 input2.csv 作为其下方的新行,丢弃来自 input2 的标题:
H1,H2
A, 1
B, 2
C, 3
D, 4
标题必须与所有输入文件匹配,stack 才能工作。
压缩
对于这两个输入 CSV:
input1.csv input2.csv
H1,H2 H3,H4
A, 1 C, 3
B, 2 D, 4
E, 5
当我运行gocsv zip input1.csv input2.csv 时,它会写入 input1.csv,然后将 input2.csv 作为新列写入右侧。列可以不同,行数也可以不同:
H1,H2,H3,H4
A, 1, C, 3
B, 2, D, 4
, , E, 5
加入
它还有一个join 命令,可以通过key 列匹配来自不同CSV 的行。
在下面的示例中,我想将罗马数字连接到十进制数字,并且我将使用第一列作为匹配两个输入的键:
input1.csv input2.csv
H1, H2 H1, H2
A, 1 C, III
B, 2 B, II
C, 3 A, I
当我运行 gocsv join -c H1 input1.csv input2.csv 时,它会通过 H1 列中的大写字母匹配两个文件中的每一行。它还重新排列了 input2 中的行以匹配 input1 中的行的顺序:
H1, H2, H1, H2
A, 1, A, I
B, 2, B, II
C, 3, C, III
它有许多预编译的二进制文件。您可以检查您的操作系统,下载并试一试。