如何连接两个具有相同行数的csv

如何连接两个具有相同行数的csv

我有两个已排序且行数相同的 CSV 文件。我想加入这两个 CSV 文件。

1.csv
1,2,3
4,5,6
7,8,9

2.csv
10,11,12
13,14,15
16,17,18

result.csv
1,2,3,10,11,12
4,5,6,13,14,15
7,8,9,16,17,18

我尝试过 cat 1.csv 2.csv >result.csv ,但它是附加而不是加入。

答案1

职位paste

paste -d, {1,2}.txt

-d,将分隔符设置为,.{1,2}.txt是大括号扩展,由 shell 完成,将扩展为1.txt 2.txt.


如果你喜欢一点awk

awk 'NR==FNR {a[FNR]=$0; next} {print a[FNR], $0}' OFS=, {1,2}.txt
  • NR==FNR仅适用于第一个文件;{a[FNR]=$0; next}创建一个数组a,其中记录号作为键,记录作为值

  • 对于第二个文件,{print a[FNR], $0}打印相应行号处的数组元素,后跟当前记录;OFS=,将输出字段分隔符设置为,

例子:

$ cat 1.txt 
1,2,3
4,5,6
7,8,9

$ cat 2.txt 
10,11,12
13,14,15
16,17,18

$ paste -d, {1,2}.txt
1,2,3,10,11,12
4,5,6,13,14,15
7,8,9,16,17,18

$ awk 'NR==FNR {a[FNR]=$0; next} {print a[FNR], $0}' OFS=, {1,2}.txt
1,2,3,10,11,12
4,5,6,13,14,15
7,8,9,16,17,18

相关内容