【问题标题】:Variable based AWK partly string match (if column/word partly matches)基于变量的 AWK 部分字符串匹配(如果列/单词部分匹配)
【发布时间】:2019-01-01 15:20:22
【问题描述】:

此问题来自this other

我的 Linux shell 脚本的

案例场景

$ cat test.txt
C1    C2    C3
1     a     snow
2     b     snowman
snow     c     sowman

搜索第三个字段包含“雪”的行可以正常工作:

$ awk '$3 ~/snow/' test.txt
1     a     snow
2     b     snowman

但我需要通过使用变量来做到这一点:

$ word="snow"

$ echo $word
snow

$ awk -v variable="snow" '$3 ~/variable/' test.txt

$ awk -v variable="$word" '$3 ~/variable/' test.txt

$

可以看出,没有结果

如何执行基于变量的 AWK 搜索

【问题讨论】:

    标签: regex awk syntax


    【解决方案1】:

    您应该将$3 ~/variable/ 更改为$3 ~ variable,因为/../ 包含正则表达式而不是变量。因此,在您的情况下,它将尝试搜索“字符串”命名变量而不是“变量”命名变量。

    【讨论】:

    • 是的,/.../ 是一个正则表达式 literal。如果模式存储在变量中,则不要使用斜线。
    猜你喜欢
    • 2013-06-04
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 2020-10-16
    相关资源
    最近更新 更多