2014-07-08 74 views
0

我想使用鍵列中的城市名稱加入兩個文件。我想加入中的重複都CSV城市的唯一的數據...使用鍵列連接兩個csv

例如

File1.csv

London, 10,15 
Rome, 12,18 
Paris, 8, 16 
Lissabon, 10,17 

File2.csv

London, 11,16 
Berlin, 13,19 
Paris, 12,18 
Lissabon, 11,19 

結果我希望,

London,10,15,11,16 
Paris,8,16,12,18 
Lissabon,10,17,11,19 

如何在bash中執行此操作?

+0

做什麼用的不匹配的部分? – Hastur

回答

2

bash有一個join命令,但它要求輸入進行排序:

$ join -j 1 -t ',' <(sort File1.csv) <(sort File2.csv) 
Lissabon, 10,17, 11,19 
London, 10,15, 11,16 
Paris, 8, 16, 12,18 
+0

嗯,這改變了輸入數據的順序。 – anubhava

+0

非常感謝! –

+0

從技術上講,'join'與'bash'無關,不過。這只是一個存在於許多/大多數Linux/Unix系統上的命令(有幾種不同的風格)。你可以運行它,如果你的shell是'sh','ksh','zsh',甚至'csh' ... – twalberg

1

使用此awk

awk -F, 'FNR==NR {a[$1]=$0;next} $1 in a{p=$1; sub(/^[^,]+, */, ""); 
     print a[p], $0}' OFS=, file1 file2 
London, 10,15,11,16 
Paris, 8, 16,12,18 
Lissabon, 10,17,11,19