awk中如何通过变量进行搜索

发布于 2024-12-11 04:24:51 字数 171 浏览 0 评论 0原文

我正在尝试使用 awk 获取给定模式后的第 N 行。 问题是 awk 按字面意思搜索模式:

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

如何转义“patt”valiable ?

I'm trying to get the N-th row after a given pattern with awk.
The problem is that awk searches pattern literally:

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

How to escape the "patt" valiable ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

太阳男子 2024-12-18 04:24:51

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

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

Use the awk matching operator instead of the slashes:

awk -v patt=${1} -v rows=${2} 'NR==p {print} $0 ~ patt {p=NR+rows}'
白首有我共你 2024-12-18 04:24:51

我已经设法让它工作,用双引号

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

I've maneged to get it work,with double quotes

patt=${1}
awk -v rows=${2} "NR==p {print} /${patt}/ {p=NR+rows}" $3
清音悠歌 2024-12-18 04:24:51

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

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

There's nothing special about the string containing the awk program, so you can build it as usual in the shell, e.g.:

awk -v rows=${2}'NR==p {print} /'"$1"'/ {p=NR+rows}'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文