Назад | Перейти на главную страницу

Как исключить определенную строку из поискового шаблона

В файле catalina.out сервера tomcat есть несколько сообщений об исключениях, например:

java.lang.NullPointerException

org.springframework.beans.factory.BeanCreationException

java.lang.RuntimeException

java.io.FileNotFoundException

Мы хотим выводить все сообщения об ошибках исключения, кроме строки «java.io.FileNotFoundException». Пытался выполнить команду ниже, но она не работает.

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

Не могли бы вы помочь найти правильную команду?

Попробуйте многоступенчатый grep: cat <file> | grep Exception | grep -v java.io.FileNotFoundException

вы можете объединить несколько операторов grep, как @John, предложенный в другом ответе, или, например, использовать awk, например.

awk '/ Исключение / &&! /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