如何加入两个行数相同的csv

Joh*_*ohn 6 linux sed awk 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
Run Code Online (Sandbox Code Playgroud)

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

hee*_*ayl 12

工作paste

paste -d, {1,2}.txt
Run Code Online (Sandbox Code Playgroud)

-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
Run Code Online (Sandbox Code Playgroud)
  • 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
Run Code Online (Sandbox Code Playgroud)