2016-07-11 136 views
0

我有兩個基於一列公用列進行合併的製表符分隔列。 例如:基於一個公共列合併兩個多列文件

文件1:

abandoning 0 V 
abandonment 0 N 
abandonments 0 N 
abandons 0 V 
abducted 0 V 
abduction 0 N 

文件2:

abandonment 
abducted 
abduction 
abound 
abounds 
abundance 
abundant 
accessable 

我想這些文件合併到具有如果該信息爲空值,第三個文件不可用。

文件3(期望的結果):

abandoning 0 V 
abandonment 0 N 
abandonments 0 N 
abandons 0 V 
abducted 0 V 
abduction 0 N 
abound 
abounds 
abundance 
abundant 
accessable 

我一直在四處尋找hereherehere。 到目前爲止,我所看到的最接近的事是這樣的:

awk '{a[$1]=a[$1] FS $2} END {for (i in a) print i a[i]}' OrigFile.txt ToMerge.txt | sort > Merged_Dict.txt 

然而,結果不包括第三列信息。 ,我得到的結果是:

abandoning 0 
abandonment 0 
abandonments 0 
abandons 0 
abducted 0 
abduction 0 
abound 
abounds 
abundance 
abundant 
accessable 

任何提示,以我要去的地方錯了嗎?

+0

檢查這個..http:/ /stackoverflow.com/questions/31401328/search-and-merge-multiple-files-in-unix/31402354#31402354 –

回答

1

你,可以做,這是awk但對於這個工具已如果你的文件已經排序

$ join -a1 -a2 file1 file2 

abandoning 0 V 
abandonment 0 N 
abandonments 0 N 
abandons 0 V 
abducted 0 V 
abduction 0 N 
abound 
abounds 
abundance 
abundant 
accessable 

這裏是一個awk解決

$ awk 'NR==FNR{a[$0];next} $1 in a{delete a[$1]}1; END{for(k in a) print k}' file2 file1 | 
    sort 
相關問題