使用基于公共列的awk合并两个csv文件

时间:2015-10-18 15:23:16

标签: csv unix join awk

我有一个包含11列的文件,第一列作为主要ID - P1 第二个csv有三列,第一列作为相同的主要ID - P1,但在两个文件中不在同一级别, 我正在使用以下命令合并这两个文件:

awk 'NR==FNR {h[$2] = $3; next} {print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,h[$2]}' first.csv second.csv > final.csv

然而,在新的csv中只获得三列

2 个答案:

答案 0 :(得分:1)

您应该看看join是不是一个更简单的解决方案。输入man join

join - join lines of two files on a common field

答案 1 :(得分:0)

如果first.csv有11列而second.csv有3列,那么你的文件顺序错误。试试这样:

awk 'NR==FNR {h[$2] = $3; next} {print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,h[$2]}' second.csv first.csv > final.csv

在本例中,您也没有使用第一列作为键,而是第二列。