Regex 刷新ABC时排除loremABCipsum
如何在grep中忽略某些结果?Regex 刷新ABC时排除loremABCipsum,regex,grep,Regex,Grep,如何在grep中忽略某些结果? 例如,我需要查找除loremABCipsum和xyzABC123之外包含ABC的所有行。您可以使用awk awk '/ABC/ {if (!/xyzABC123|loremABCipsum/) print}' file 这将使用ABC打印所有行,但如果使用xyzABC123或loremABCipsum 逻辑测试版本: awk '{f=0} /ABC/ {f=1} /xyzABC123|loremABCipsum/ {f=0} f' file 假设您的grep
例如,我需要查找除loremABCipsum和xyzABC123之外包含ABC的所有行。您可以使用
awk
awk '/ABC/ {if (!/xyzABC123|loremABCipsum/) print}' file
这将使用ABC
打印所有行,但如果使用xyzABC123
或loremABCipsum
逻辑测试版本:
awk '{f=0} /ABC/ {f=1} /xyzABC123|loremABCipsum/ {f=0} f' file
假设您的
grep
版本支持PCRE,请使用负前瞻:
grep -P '(?!=xyz|lorem)ABC(?!123|ipsum)' filename
使用管道:
grep -e ABC [filename] | grep -v loremABCispum | grep -v xyzABC123
这将过滤掉匹配项
ABC xyzABC123
——不清楚OP希望以何种方式处理此问题,但我猜不应该过滤。可能是这样,但如果需要,可以进行排序。但正如我读到的,他不喜欢包含xyzABC123 | loremABCipsum
的行,所以应该可以。。。。除非您可能也有xyzABCipsum
@tripleee True,否则在这种情况下,最好的选择可能是grep ABC filename | grep-vP'xyzABC123 | loremabipsum'