2016-07-11 10 views
0

共通の列に基づいてマージしたい2つのタブ区切りの列があります。たとえば :1つの一般的な列に基づいて2つのマルチ列ファイルをマージする

ファイル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 

しかし、結果は3列目の情報が含まれていません。私は入手 結果は次のとおりです。どこが間違っているつもりのよう

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 
関連する問題