Я хочу найти строку и чтобы вытянуть все линии между двумя шаблонами [дубликат]

Я не уверен, что полностью понимаю вопрос, но этот предыдущий вопрос кажется, что он охватывает аналогичную территорию?

1
21.04.2016, 20:47
2 ответа

Определенно, мы можем использовать awk , попробуйте этот

awk -v RS="END" '$0~/Frankfurt/{print $0 RS}' file
0
27.01.2020, 23:48

Не уверен, что awk - правильный инструмент для этой работы, поскольку ваш поиск основан на нескольких строках. Я бы подумал, что это работа для perl. Просматривая ваш файл, вы можете использовать (аналогично awk):

if (/^START/ .. /^END/){}

в нем вы храните ваши строки в массиве, который вы собираетесь вывести, если, скажем, Франкфурт встречается (используйте здесь булево число):

push @lines, $_;
if (/Frankfurt/)
        $toPrint = 1;

и во всех случаях, когда вы выходите из вашего шаблона, выводите массив, если ваше булево число истинно, не выводите в противном случае, опустошите ваш массив.

1
27.01.2020, 23:48

Теги

Похожие вопросы