我有一个文件,包含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只有三列
我有一个文件,包含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只有三列
您应该看到,如果join
不会是一个简单的解决方案。键入man join
为:
join - join lines of two files on a common field
如果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
您也没有使用第一列作为这个例子中的键,但第二个。
我已经使用了连接-t,<(sort -t,-k1 second.csv)<(sort -t,-k1 first.csv)> third.csv,但它给出了非法的字节序列错误 – aquaabhi