如何使用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