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

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

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

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

решение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}"

Связанный контент