使用键列连接两个csv

时间:2014-07-08 16:10:24

标签: bash 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中做到这一点?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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