Инструмент, подобный Grep, для отображения определенной области текста относительно шаблона

У меня есть такое текстовое сообщение, опубликованное на высокой частоте:

pose: - position: x: 0.0 y: 0.0 z: 0.0 orientation: x: 0.0 y: 0.0 z: 0.0 w: 1.0 - position: x: 0.350104982508 y: 0.729534356813 z: -3.10228873344e-06 orientation: x: -9.84128404362e-07 y: -1.996909502e-06 z: -0.447019362477 w: 0.894524281149 - position: x: 0.455011 y: -1.59228 z: 0.0 orientation: x: 0.0 y: 0.0 z: 0.0 w: 1.0 

Я хочу передать его в grep или любой другой подобный инструмент, чтобы показать область, начинающуюся с 12 строк после «поза:» до 20 строк после «поза:». Основные команды для grep позволяют показывать только n строк до или после «pose:». В моем случае то, что я хочу отобразить, – это подчинение:

 position: x: 0.350104982508 y: 0.729534356813 z: -3.10228873344e-06 orientation: x: -9.84128404362e-07 y: -1.996909502e-06 z: -0.447019362477 w: 0.894524281149 

Есть ли инструменты командной строки, которые могут это сделать?

3 Solutions collect form web for “Инструмент, подобный Grep, для отображения определенной области текста относительно шаблона”

  awk '/^pose:/{s=NR+11} (NR>s && NR<s+10){print $0}' 

Когда линия начинается с pose: s устанавливается как NR+11 . если NR больше s и печатается менее s+10 строк.

Ответ ЗАМЕНА:

В основном это вопрос о выделении «5 строк после» из «всех 20 строк после»,

вот мое быстрое предложение

diff <(grep 'pose:' filename -A 20) <(grep 'pose:' filename -A 5)

Конечно, выход diff будет содержать некоторые дополнительные заголовки и знак «<», который вы можете захотеть отфильтровать

это, однако, не имеет большого значения, чтобы отфильтровать

 (grep -A 20 "pose:" file; echo "--")|grep -B 9 '^--' 
  • Стратегия для извлечения имени фильма из этого неравномерного набора данных?
  • Bash, удалить строки, содержащие строку с grep
  • Почему «grep». * «файл» работает и «grep. * файл« нет »?
  • заменяя содержимое одного файла другим
  • Греп что-то конкретное из результатов последнего исполнения?
  • Как передать журнал переменных в качестве аргумента скрипту?
  • Захват в переменных оболочки аргументов после команды (между скобками)
  • grep только подкаталоги, соответствующие шаблону
  • Возвратная линия на следующей строке
  • Как grep строки, которые имеют определенное значение в определенном столбце?
  • Как перенести часть шаблона соответствия вывода в файл, оставив остальную часть в stdout?
  • Linux и Unix - лучшая ОС в мире.