grep: выводить конкретную строку после матча

есть ли способ, используя grep, вывести строку, которая попадает на определенное количество строк после того, как найдено совпадение? Например, я хочу вывести строку с совпадением, 8-ю строку после совпадения и 17-ю строку после совпадения. Такое возможно?

Я знаю, что могу вывести следующие 17 строк, используя grep -A17, но я хочу знать, могу ли я получить полезную линию без всего между ними.

5
задан ewok
источник

1 ответов

попробуйте трубопровод awk blah | grep stuff -A17 | awk "NR==1{print} NR==8{print} NR==17{print;exit}" выводятся только 1-я, 8-я и 17-я строки.

Если вы хотите включить повторяющиеся шаблоны, вы можете использовать оператор mod ( % )

awk "(NR-1)%17 == 0{print} (NR-8)%17 == 0{print} (NR-17)%17 == 0{print}"

2
отвечен Foosh 2015-01-27 17:47:08
источник

Другие вопросы bash grep