使用Bash合并CSV文件

时间:2015-06-17 14:55:18

标签: bash csv merge

我有2个这样的csv文件:

name;num;value1
name1;1;1
name1;2;10
name2;1;5

name;num;value2
name1;2;8
name2;2;6
name1;1;7

我想像这样合并这2个CSV

name;num;value1;value2
name1;1;1;7
name1;2;10;8
name2;1;5;6

2 csv具有名称和num但不是相同的顺序。我如何以正确的顺序在fisrt文件中添加value2列?

1 个答案:

答案 0 :(得分:0)

你可以使用这个awk:

awk 'BEGIN{FS=OFS=";"} FNR==NR{a[$1,$2]=b[$1]=$NF;next} 
         {print $0, (a[$1,$2])?a[$1,$2]:b[$1]}' file2 file1
name;num;value1;value2
name1;1;1;7
name1;2;10;8
name2;1;5;6