从输入文件中grep某个列

时间:2018-04-09 15:36:29

标签: bash grep

我有一个文件file1.txt,其格式如下:

EMERGE-3 16218877 0 0 2 -9
EMERGE-3 16230920 0 0 1 -9
EMERGE-8 16220003 0 0 1 -9
EMERGE-9 16231695 16220014 16220010 1 -9
EMERGE-11 16218001 0 0 1 -9

我有另一个文件file2.txt,其中的ID列表如下:

16230920
16220014
16218001
16218877

我想仅在file1.txt的第2列执行grep搜索。因此,搜索的输出将类似于:

somecommand file1 file2

EMERGE-3 16230920 0 0 1 -9
EMERGE-11 16218001 0 0 1 -9
EMERGE-3 16218877 0 0 2 -9

(请注意,行EMERGE-9 16231695 16220014 16220010 1 -9未包含在输出中)。这是我现在面临的主要问题。如果我执行命令:

grep -f file2.txt file1.txt

输出将包含行EMERGE-9 16231695 16220014 16220010 1 -9,因为ID 16220014位于file1.txt的第3列,但我试图避免在输出中包含此行 - 即我只想要在file1.txt的第2列中搜索ID。

1 个答案:

答案 0 :(得分:1)

关注awk可能对您有帮助。

awk 'FNR==NR{a[$0];next} ($2 in a)' file2.txt  file1.txt