如何在搜索模式中排除某个字符串

如何在搜索模式中排除某个字符串

tomcat 服务器的 catalina.out 文件中有几个异常消息,例如 -

java.lang.NullPointerException

org.springframework.beans.factory.BeanCreationException

java.lang.RuntimeException

java.io.FileNotFoundException

我们希望 grep 除“java.io.FileNotFoundException”字符串之外的所有异常错误消息。尝试使用以下命令,但不起作用。

cat catalina.out | grep '.*(?<\!=java.io.FileNotFound)Exception\*.)'

您能帮忙找出正确的命令吗?

答案1

尝试多阶段 grep:cat <file> | grep Exception | grep -v java.io.FileNotFoundException

答案2

您可以按照@John在另一个答案中所建议的那样连接多个grep语句,或者例如使用awk

awk'/Exception/&&!/java.io.FileNotFoundException/'catalina.out

在你的样本上这将产生

$ awk '/Exception/ && !/java.io.FileNotFoundException/' catalina.out 
java.lang.NullPointerException
org.springframework.beans.factory.BeanCreationException
java.lang.RuntimeException

这基本上说;匹配一切 Exception细绳; 不是 java.io.FileNotFoundException

相关内容