[英]how to combine contents of two files based on key columns in linux
我有兩個文件,其中3列相同,第4列不同。
文件A
a b c 100
e f g 50
h i j 25
文件B
a b c 200
e f g 20
h i j 15
如何將文件A
和文件B
合並為文件C
?
文件C
a b c 100 200
e f g 50 20
h i j 25 15
-更新-
我使用了肯特郡喬特內提供的解決方案,但腳本的兩個輸出都具有。 (點)而不是逗號。 看起來像
a,b,c,100.200
e,f,g,50.20
這是一個awk
awk 'FNR==NR {a[$1,$2,$3]=$4;next} {print $0,a[$1,$2,$3]}' B A > C
cat C
a b c 100 200
e f g 50 20
h i j 25 15
如果他們只有一個共同的專欄,那么join
可以成功。 但是讓我們使用它,然后解析輸出:
$ join <(sort f1) <(sort f2)
a b c 100 b c 200
e f g 50 f g 20
h i j 25 i j 15
這是根據第一列加入的。 現在,讓我們使用cut
來獲取第5列和第6列以外的所有內容:
$ join <(sort f1) <(sort f2) | cut -d' ' -f1-4,7
a b c 100 200
e f g 50 20
h i j 25 15
請注意使用sort
來對文件進行排序,因為join
需要對文件進行排序才能工作。 在給出示例數據的情況下,它無需sort
,但為了保持一致性而添加了該數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.