Bash
根據匹配的第一列(帶標題)合併兩個 CSV
我有兩個 CSV 文件。其中一個包含大量數據:
主文件
Order No.,invoiceNumber,invoiceAmount,invoiceAmountNet 20001,20010,500,5 20002,20011,400,4 20003,20012,300,3 20004,20013,200,2 20005,20014,200,1
雖然我的其他 CSV 文件的資訊較少:
2020 年 10 月.csv
Order No.,Timestamp,ID 20001,2020-10-01 12:00:00,123456 20002,2020-10-02 13:00:00,123457
我的目標是基於 october-2020.csv 創建一個新的 CSV 文件,並從 main.csv 添加資訊。通用資訊是訂單號:
輸出.csv
Order No.,invoiceNumber,invoiceAmount,invoiceAmountNet,Order No.,Timestamp,ID 20001,20010,500,5,20001,2020-10-01 12:00:00,123456 20002,20011,400,4,20002,2020-10-02 13:00:00,123457
這怎麼可能是腳本?我很感激任何幫助。
在兩個文件
join
的第一個欄位 ( ) 上使用作為欄位分隔符:Order No.``,
join -t, -o1.1,1.2,1.3,1.4,2.1,2.2,2.3 main.csv october-2020.csv > output.csv
和
$ cat output.csv Order No.,invoiceNumber,invoiceAmount,invoiceAmountNet,Order No.,Timestamp,ID 20001,20010,500,5,20001,2020-10-01 12:00:00,123456 20002,20011,400,4,20002,2020-10-02 13:00:00,123457
由於這兩個文件已經在第一個欄位上排序,我們不需要手動對它們進行排序。並且由於您希望
Order No.
在輸出中出現兩次,因此使用-o
選項指定欄位(第一個輸入文件的欄位 1-4,第二個文件的欄位 1-3)。