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

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

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

30
задан ewok
02.03.2023 16:39 Количество просмотров материала 2618
Распечатать страницу

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 2023-03-04 00:27

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх