【发布时间】:2011-10-19 10:48:32
【问题描述】:
我正在尝试使用 awk 获取给定模式之后的第 N 行。 问题是 awk 从字面上搜索模式:
awk -v patt=${1} -v rows=${2}'NR==p {print} /patt/ {p=NR+rows}'
如何转义“patt”变量?
【问题讨论】:
标签: awk pattern-matching
我正在尝试使用 awk 获取给定模式之后的第 N 行。 问题是 awk 从字面上搜索模式:
awk -v patt=${1} -v rows=${2}'NR==p {print} /patt/ {p=NR+rows}'
如何转义“patt”变量?
【问题讨论】:
标签: awk pattern-matching
使用 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 程序的字符串没有什么特别之处,所以你可以像往常一样在 shell 中构建它,例如:
awk -v rows=${2}'NR==p {print} /'"$1"'/ {p=NR+rows}'
【讨论】: