如何在awk中按变量搜索

如何在awk中按变量搜索,awk,pattern-matching,Awk,Pattern Matching,我试图用awk获得给定模式后的第N行。 问题在于,awk从字面上搜索模式: awk -v patt=${1} -v rows=${2}'NR==p {print} /patt/ {p=NR+rows}' 如何退出“patt”有效性?包含awk程序的字符串没有什么特殊之处,因此您可以像往常一样在shell中构建它,例如: awk -v rows=${2}'NR==p {print} /'"$1"'/ {p=NR+rows}' 我一直努力让它工作,用双引号 patt=${1} awk -v ro

我试图用awk获得给定模式后的第N行。 问题在于,awk从字面上搜索模式:

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

如何退出“patt”有效性?

包含awk程序的字符串没有什么特殊之处,因此您可以像往常一样在shell中构建它,例如:

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

我一直努力让它工作,用双引号

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

使用awk匹配运算符而不是斜杠:

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