Есть ли способ, используя 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}"