Я пытаюсь найти способ фильтровать вывод команды cat чтобы отображать только текст, включенный между двумя точками. Мне нужно поставить это на сценарий.

Более подробно, учитывая следующий образец текста

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus        
et magnis dis parturient montes, nascetur ridiculus mus. Donec quam
felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla
consequat massa quis enim. Donec pede justo, fringilla vel, aliquet
nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a,
venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. 

-------------
Release Notes
-------------

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus        
et magnis dis parturient montes, nascetur ridiculus mus. Donec quam
felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla
consequat massa quis enim. Donec pede justo, fringilla vel, aliquet
nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a,
venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. 

------------
Known Issues
------------

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus        
et magnis dis parturient montes, nascetur ridiculus mus. Donec quam
felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla
consequat massa quis enim. Donec pede justo, fringilla vel, aliquet
nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a,
venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. 

Мне нужен вывод только для отображения текста между

-------------
Release Notes
-------------

а также

------------
Known Issues
------------

блоки.

Я пробовал что-то с помощью grep но текст в несколько строк не работает (или, по крайней мере, я не смог заставить его работать).

1 ответ1

3

Попробуйте awk:

awk '/Release Notes/,/Known Issues/' file | head -n -3 | tail -n +4

Первая команда извлекает текст между "Примечаниями к выпуску" и "Известной проблемой", голова и хвост предназначены для удаления первой и последней строк из вашего примера. Если вы не хотите, чтобы awk печатал совпавшие строки, вы должны использовать:

awk '/^Release Notes$/{flag=1;next}/^Known Issues$/{flag=0}flag' file

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .