Вопрос по regex, unix, shell – grep Exception, но исключить конкретное исключение

5

В настоящее время я отвечаю за "Исключение" из файла и выведите 10 строк до и после использования:

grep -C 10 "[.*Exception"

Но теперь я хочу исключить некоторые конкретные исключения, скажем,AAAException а такжеBBBExceptionкак я мог это сделать? Это можно сделать через

grep -v "AAAException" | grep -C 10 "[.*Exception"

Но если в файле, у меня естьAAAException в пределах 10 строк от какого-то другого исключения, эта строка не будет включена в вывод, а это не то, что я хочу. Как я могу не соответствоватьAAAException, но если это произошло в пределах 10 строк от какого-то другого исключения, оно все равно будет включено в вывод?

Ваш Ответ

2   ответа
0

Если ваш положительный образец соответствияException это слово, т. е. не предшествует / сопровождается другими алфавитами, тогда вы можете использовать слово-границы.

$ grep -C 10 '\<NullPointerException\>\|\<SessionTimeoutException\>'
Это может быть любое исключение, скажем NullPointerException или SessionTimeoutException Kathie
Это будет работать, если у меня есть положительный список, но у меня есть отрицательный список. Это означает, что мне нужно соответствовать ВСЕ исключения за исключением NullPointerException или SessionTimeoutException Kathie
Если у вас есть список + ve * Exception, вы можетеOR with |
проверить отредактированное решение
Я не понимаю, что вы имеете в виду «ИЛИ с |», однако на данном этапе у меня есть список исключений Kathie
5

Если у вас естьgrep -P Вы можете указать отрицательный взгляд за утверждением.

grep -C 10 -P '\[.*(?<!AAA|BBB)Exception' 
Работает отлично! Благодарю. Kathie
Не могли бы вы сказать мне, что\[ средства?
Мне было интересно, как это? & Lt ;! здесь работает? Kathie
Это улучшит качество ответа, если вы можете объяснить это регулярное выражение, которое вы использовали. Спасибо!
По сути, это означает, что «текст до этого здесь не может быть».

Похожие вопросы