【问题标题】:awk - Variable expansion in regexawk - 正则表达式中的变量扩展
【发布时间】:2013-10-05 02:49:17
【问题描述】:

为什么这样的东西不起作用:

echo 4 | awk --assign=abc=4 '/$abc/'

实际的例子要复杂得多。基本上我有一个需要重复多次的正则表达式,所以我将它存储在abc 中。有什么方法可以扩展/<regex>/ 中的 awk 变量吗?我试过单引号和双引号,每种组合。我真的需要单引号,因为我有几个双引号,它实际上看起来更像awk --assign=test=something '/$test/ { a lot of stuff here inc $test several times with double quotes; }'

【问题讨论】:

    标签: regex awk


    【解决方案1】:

    awk 不使用 // 正则表达式之间的变量:

    使用~ 正则表达式运算符,以下等效项将具有相同的效果:

    echo 4 | awk --assign=abc=4 '$0 ~ abc'
    4
    

    【讨论】:

    • 看到使用的 long 选项很奇怪。
    • 谢谢。我在the gawk manual 中做了一些研究,但我没有看到任何关于// 中没有变量的信息。 @sudo_O 是的,我在短期内尝试了很长时间都没有用(我想也许有区别)。我用提供的答案切换回-v
    • 它们没有区别,只是在我回答的 500 多个awk 问题中,我从未见过它使用过。我必须亲自检查man
    • 我发现 gawk 手册很难导航。尽管如此,我还是找到了gnu.org/software/gawk/manual/html_node/…gnu.org/software/gawk/manual/html_node/Computed-Regexps.html
    • @glennjackman:感谢分享该链接(我无法在搜索中找到该链接)。
    猜你喜欢
    • 1970-01-01
    • 2020-11-14
    • 2012-10-19
    • 1970-01-01
    • 2016-09-26
    • 2022-10-20
    • 1970-01-01
    • 2012-07-17
    • 2019-04-02
    相关资源
    最近更新 更多