Bash 使用关键字将四个csv文件统一到一个csv中

Bash 使用关键字将四个csv文件统一到一个csv中,bash,csv,Bash,Csv,我需要加入4个csv文件使用每个文件的第一列作为关键字。我使用过sort,但在本例中它不运行 每个文件的结构都很简单 file 1 London,7,10 Madrid,10,20 Paris,7,14 file 2 London,10,15 Madrid,10,16 Paris,11,16 file 3 London,6,12 Madrid,7,14 Paris,8,15 file 4 London,7,14 Madrid,8,14 Paris,9,15 我需要 ending file

我需要加入4个csv文件使用每个文件的第一列作为关键字。我使用过sort,但在本例中它不运行

每个文件的结构都很简单

file 1
London,7,10
Madrid,10,20
Paris,7,14

file 2
London,10,15
Madrid,10,16
Paris,11,16

file 3
London,6,12
Madrid,7,14
Paris,8,15

file 4
London,7,14
Madrid,8,14
Paris,9,15
我需要

ending file 
London,7,10,10,16,6,12,7,14
Madrid,10,20,10,16,7,14,8,14
Paris,7,14,11,16,8,15,9,15

再次感谢

使用
awk

$ awk -F, '{arr[$1]=arr[$1]","$2","$3}END{for (i in arr) print i arr[i]}' file1 file2 file3 file4
London,7,10,10,15,6,12,7,14
Madrid,10,20,10,16,7,14,8,14
Paris,7,14,11,16,8,15,9,15

使用
join
程序。它一次只能做两个,所以你需要把它链起来

join -t, test.1 test.2 | join -t, - test.3 | join -t, - test.4
文件需要按照连接字段(1)进行排序,如果没有,您也需要通过
sort

join -t, <(sort test.1) <(sort test.2) | join -t, - <(sort test.3) | join -t, - <(sort test.4)

join-t,Awk运行良好,但我文件中的某些内容不正确,因为在使用Awk-F之后……我得到了以下结果:伦敦,7,10,第二行是10,16,第三行6,12…马德里和Paris@EnricAgudPique您是否使用了如上所述的脚本。如果是,请提供您使用的awk版本。在gnu上测试了它awk@nu11po1n73R我用[enric@localhost~]$awk-W版本GNU awk 3.1.5也许问题来自csv文件,但它们有我上面显示的格式…问题解决了!我对Windows回车有问题,我使用了tr-d'\r'outfile.csv来删除它。它现在运行得很好啊@恩里卡古德皮克很高兴听到这有帮助:)