Perl легко решает эту проблему с помощью своего оператора range , иногда называемого оператором flip-flop
:
perl -nle 'if (/^##/.../^##/) {print if /some_error_message/i}' file
Это читает ваш файл, ища блок, который начинается и заканчивается с помощью ##
, привязанного к началу строки. Затем внутри блока печатается любая строка с токеном some_error_message
. В этом примере «некоторое _сообщение об ошибке _» сопоставляется без учета регистра.