В файле 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