如何排除search模式中的某个string

在tomcat服务器的catalina.out文件中有几个exception消息就像 –

java.lang.NullPointerException org.springframework.beans.factory.BeanCreationException java.lang.RuntimeException java.io.FileNotFoundException 

我们希望grep除“java.io.FileNotFoundException”string之外的所有exception错误消息。 试着用下面的命令,但它不工作。

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

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

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

你可以连接多个grep语句作为@John在其他答案中build议或例如使用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 

这基本上说, 匹配所有具有 Exceptionstring的东西; 不是 java.io.FileNotFoundException