2015-10-18 104 views
0

我有一个文件,包含11列,第一列作为主ID - P1 第二个csv,包含三列,第一列为相同的主ID - P1,尽管不在同一级别在这两个文件, 我用合并以下命令这两个文件:使用基于公共列的awk合并两个csv文件

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只有三列

回答

1

您应该看到,如果join不会是一个简单的解决方案。键入man join为:

join - join lines of two files on a common field 
+0

我已经使用了连接-t,<(sort -t,-k1 second.csv)<(sort -t,-k1 first.csv)> third.csv,但它给出了非法的字节序列错误 – aquaabhi

0

如果first.csv有11列和second.csv有三个,那么你有你的文件在错误的顺序。尝试是这样的:

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 

您也没有使用第一列作为这个例子中的键,但第二个。