Такие инструменты, как grep
, сопоставляют только одну строку за раз, поэтому при использовании grep
вы не можете сопоставить все это с помощью одного регулярного выражения.
Вы можете использовать такой инструмент, как sed
, чтобы извлечь только часть вложенного блока, а затем передать ее в grep
для поиска интересующего вас сообщения об ошибке.
Команда /START/,/END/p
в sed
будет печатать только строки между блоком, начинающимся и заканчивающимся строками, соответствующими двум регулярным выражениям. Кроме того, вы должны передать sed
аргумент -n
, чтобы он не печатал никаких строк по умолчанию.
Так:
$ sed -n '/^##$/,/^##$/p' mylogfile.txt |
grep -iq '^some_error_message$'