regex 使用grep进行负匹配(匹配不包含foo的行)

w8biq8rn  于 2023-05-01  发布在  其他
关注(0)|答案(3)|浏览(110)

如何使用grep匹配所有不匹配特定模式的行?我试过这个:

grep '[^foo]'
zbwhf8kr

zbwhf8kr1#

grep -v是你的朋友:

grep --help | grep invert

-v,--反相匹配选择非匹配行
还可以查看相关的-L-l的补码)。
-L,--files-without-match only print FILE names containing no match

rsl1atfo

rsl1atfo2#

您也可以使用awk来实现这些目的,因为它允许您以更清晰的方式执行更复杂的检查:
不包含foo的行:

awk '!/foo/'

既不包含foo也不包含bar的行:

awk '!/foo/ && !/bar/'

既不包含foo也不包含bar但包含foo2bar2的行:

awk '!/foo/ && !/bar/ && (/foo2/ || /bar2/)'

等等。

cotxawn7

cotxawn73#

在您的例子中,您可能不想使用grep,而是在find命令中添加一个否定子句e。g的。

find /home/baumerf/public_html/ -mmin -60 -not -name error_log

如果你想在名字中包含通配符,你必须对它们进行转义。例如,排除带有后缀的文件。日志:

find /home/baumerf/public_html/ -mmin -60 -not -name \*.log

相关问题