【发布时间】:2014-01-20 07:36:08
【问题描述】:
如何忽略 grep 中的某些结果? 例如,我需要找到除 loremABCipsum 和 xyzABC123 之外的所有包含 ABC 的行。
【问题讨论】:
如何忽略 grep 中的某些结果? 例如,我需要找到除 loremABCipsum 和 xyzABC123 之外的所有包含 ABC 的行。
【问题讨论】:
使用管道:
grep -e ABC [filename] | grep -v loremABCispum | grep -v xyzABC123
【讨论】:
假设您的 grep 版本支持 PCRE,请使用否定前瞻:
grep -P '(?!=xyz|lorem)ABC(?!123|ipsum)' filename
【讨论】:
xyzABCipsum
grep ABC filename | grep -vP 'xyzABC123|loremABCipsum'
您可以使用awk
awk '/ABC/ {if (!/xyzABC123|loremABCipsum/) print}' file
这将打印所有带有ABC 的行,但如果有xyzABC123 或loremABCipsum,则不会打印
一个合乎逻辑的测试版本:
awk '{f=0} /ABC/ {f=1} /xyzABC123|loremABCipsum/ {f=0} f' file
【讨论】:
ABC xyzABC123 - 不清楚 OP 想要以哪种方式处理这个问题,但我想它不应该被过滤。
xyzABC123|loremABCipsum 的行,所以应该没问题。