Я не уверен, что полностью понимаю вопрос, но этот предыдущий вопрос кажется, что он охватывает аналогичную территорию?
Определенно, мы можем использовать awk
, попробуйте этот
awk -v RS="END" '$0~/Frankfurt/{print $0 RS}' file
Не уверен, что awk - правильный инструмент для этой работы, поскольку ваш поиск основан на нескольких строках. Я бы подумал, что это работа для perl. Просматривая ваш файл, вы можете использовать (аналогично awk):
if (/^START/ .. /^END/){}
в нем вы храните ваши строки в массиве, который вы собираетесь вывести, если, скажем, Франкфурт встречается (используйте здесь булево число):
push @lines, $_;
if (/Frankfurt/)
$toPrint = 1;
и во всех случаях, когда вы выходите из вашего шаблона, выводите массив, если ваше булево число истинно, не выводите в противном случае, опустошите ваш массив.