如何使用grep删除多个列(仅第一列)?

如何使用grep删除多个列(仅第一列)?,grep,Grep,我有这样一个文件(由\t分隔): 我想删除第一列中包含AAED1和AK3的行。实际上,我的文件有数千行,我想删除数百行。我有一个包含要搜索的模式的文件(这是一个示例): 我试过这个: grep -wvf pattern.txt file.txt 预期产出: AARS Previous_symbol AARS1 ABP1 Previous_symbol AOC1 ACN9 Previous_symbol SDHAF3 ADCY3 Previous_s

我有这样一个文件(由
\t
分隔):

我想删除第一列中包含
AAED1
AK3
的行。实际上,我的文件有数千行,我想删除数百行。我有一个包含要搜索的模式的文件(这是一个示例):

我试过这个:

grep -wvf pattern.txt file.txt
预期产出:

AARS    Previous_symbol     AARS1
ABP1    Previous_symbol     AOC1
ACN9    Previous_symbol     SDHAF3
ADCY3   Previous_symbol     ADCY8
AK8     Previous_symbol     AK3
我得到的结果是:

AARS    Previous_symbol     AARS1
ABP1    Previous_symbol     AOC1
ACN9    Previous_symbol     SDHAF3
ADCY3   Previous_symbol     ADCY8

最后一行也被删除,因为它在第三列中包含
AK3
。是否有办法只搜索第一列?

在当前设置中,带有模式的文件将搜索行中出现的任何模式,因此行:

AK8    Previous_symbol    AK3
也将匹配AK3

您需要将线的起点标记添加到阵列中,以确保阵列仅在线的起点处锚定检查,因此:

^AAED1
^AK3
如果无法使用模式直接编辑文件,请使用以下选项:

grep -f <(sed 's/^/^/' file1) file

grep-f检查此线程。您是否混淆了列和行/行?
^AAED1
^AK3
grep -f <(sed 's/^/^/' file1) file