我有一個文件,包含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