我有两个文件。
文件1:
4
14
18
45
53
60
64
102
106
158
162
文件2:
28 1 2
54 1 2
90 1 1
103 1 1
155 1 17
191 1 1
235 1 1
245 4 1
275 4 1
362 4 1
377 18 1
391 18 1
413 18 2
466 18 2
492 18 2
494 18 41
498 45 1
522 45 1
529 57 3
542 53 1
560 58 6
562 164 25
568 164 5
如果文件2的第二列与文件1中的值匹配,我想从文件2中提取值。
所以预期的输出将是:
245 4 1
275 4 1
362 4 1
377 18 1
391 18 1
413 18 2
466 18 2
492 18 2
494 18 41
498 45 1
522 45 1
542 53 1
我在线上看到许多解决方案都使用python或Perl,但是,我想使用linux命令来执行此操作,有什么主意吗?
答案 0 :(得分:2)
应该这样做吗?
awk 'FNR==NR{a[$0]++};FNR!=NR{if($2 in a){print}}' file1 file2
245 4 1
275 4 1
362 4 1
377 18 1
391 18 1
413 18 2
466 18 2
492 18 2
494 18 41
498 45 1
522 45 1
542 53 1
说明:
FNR==NR
),我们就会将每个值存储在数组a[$1]++
$2
)中的值是否在数组中;如果是,我们将它们打印出来。