我有两个已排序且行数相同的 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