2013-04-04 53 views
2

我有兩個文件:比較列

文件1

1 
2 
3 
4 
5 

文件2

a  0  1 h f 
b  0  3 h f 
c  0  8 h f 
d  0  5 h f 

我想比較file1複製到文件2的欄3和打印文件2的整排這樣

a  0  1  h f 
b  0  3  h f 
d  0  5  h f 

我試過用awk但我打印欄3:

awk 'NR == FNR {f2[$3]=$1; next} $1 in f2{print f2[$1],$1}' file2 file1 

如何從文件2打印完整行?

回答

3

如果你給file1第一要容易得多:

$ awk 'NR==FNR{a[$1];next}$3 in a' file1 file2 
a  0  1 h f 
b  0  3 h f 
d  0  5 h f 

這樣你就可以輕鬆打印整條生產線在file2如果在第三場的值是file1。默認塊在awk{print $0},所以它可以從$3 in a{print $0}中省略。

+0

是否需要file1中的唯一編號,因爲我看到行數減少@ sudo_O – abh 2013-04-04 18:38:18

+0

@ user2133307我不確定你的意思?如果'file2'中'field 3'的值也在'file1'中,那麼整行將被打印。如果這不正確,請用**代表**輸入文件和預期輸出更新問題。 – 2013-04-04 18:43:18

+0

如果file1有兩個3或5(重複)像這樣1,2,3,4,3,5,5。它打印什麼(只有一次)sudo_O – abh 2013-04-04 19:00:49