Простая версия, простоsed
(обычно вам не нужно направлять sed
вывод по конвейеру, просто объединяйте команды с;
):
sed '/^##$/,//!d;/some_error_message/!d'
Во-первых, мы создаем диапазон адресов от^##$
(строки всего##
)до пустого шаблона (, что означает :повторение последнего шаблона, таким образом, снова ##
строка ). Инвертируйте совпадение с !
и d
, чтобы удалить все, что находится за пределами диапазона.
Во-вторых, d
удалить все строки, не(!
)содержащие some_error_message
.