2013-04-04 65 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