我有一个文件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。
答案 0 :(得分:1)
关注awk
可能对您有帮助。
awk 'FNR==NR{a[$0];next} ($2 in a)' file2.txt file1.txt