Это может работать для вас (GNU sed):
sed -n '/^# Query [0-9]*:/{:a;N;/^\s*$/M!ba;/Hosts.*127-0-0-1/I!p}' file
Используйте параметр sed * -n
, чтобы печатать только явно.Сфокусируйтесь на любой строке, которая начинается # Query n*:
, где n*
означает ноль или более цифр (используйте [^:]*
, если это совпадение слишком конкретное).Собирайте текущие и последующие строки до (и включая) пустой строки.Протестируйте коллекцию строк для строки 127-0-0-1
и, если ее нет, напечатайте коллекцию.Все остальные строки не будут напечатаны.
NB Коллекция включает в себя как строку запроса, так и пустую строку, это может быть не так, если последний запрос не имеет пустой строки в качестве последней строки файла,Это может быть улучшено улучшенной версией:
sed -n '/^# Query [0-9]*:/{:a;$!{N;/^\s*$/M!ba};/Hosts.*127-0-0-1/I!p}' file