Linux
如何加入具有相同行數的兩個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
但它附加而不是加入。
工作
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