Regex 刷新ABC时排除loremABCipsum

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

如何在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'