Я пытаюсь получить N-ую строку после заданного шаблона с помощью awk. Проблема в том, что awk ищет шаблон буквально:
awk -v patt=${1} -v rows=${2}'NR==p {print} /patt/ {p=NR+rows}'
Как избежать "патта"?
Используйте оператор сопоставления awk вместо косой черты:
awk -v patt=${1} -v rows=${2} 'NR==p {print} $0 ~ patt {p=NR+rows}'
Мне удалось заставить его работать, с двойными кавычками
patt=${1} awk -v rows=${2} "NR==p {print} /${patt}/ {p=NR+rows}" $3
В строке, содержащей программу awk, нет ничего особенного, поэтому вы можете собрать ее как обычно в оболочке, например:
awk -v rows=${2}'NR==p {print} /'"$1"'/ {p=NR+rows}'