如何在awk中按变量搜索

时间:2011-10-19 10:48:33

标签: awk pattern-matching

我试图用awk获得给定模式后的第N行。 问题是awk搜索模式:

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

如何逃脱“patt”的可靠性?

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

我设法用双引号

让它运转起来
patt=${1}
awk -v rows=${2} "NR==p {print} /${patt}/ {p=NR+rows}" $3

答案 2 :(得分:0)

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

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