Как искать по переменной в awk - PullRequest
2 голосов
/ 19 октября 2011

Я пытаюсь получить N-ую строку после заданного шаблона с помощью awk. Проблема в том, что awk ищет шаблон буквально:

awk -v patt=${1} -v rows=${2}'NR==p {print} /patt/ {p=NR+rows}'

Как избежать "патта"?

Ответы [ 3 ]

5 голосов
/ 19 октября 2011

Используйте оператор сопоставления awk вместо косой черты:

awk -v patt=${1} -v rows=${2} 'NR==p {print} $0 ~ patt {p=NR+rows}'
1 голос
/ 19 октября 2011

Мне удалось заставить его работать, с двойными кавычками

patt=${1}
awk -v rows=${2} "NR==p {print} /${patt}/ {p=NR+rows}" $3
0 голосов
/ 19 октября 2011

В строке, содержащей программу awk, нет ничего особенного, поэтому вы можете собрать ее как обычно в оболочке, например:

awk -v rows=${2}'NR==p {print} /'"$1"'/ {p=NR+rows}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...