基于变量的AWK部分匹配字符串(如果列/单词部分匹配)

时间:2019-01-01 02:03:20

标签: regex awk syntax

  

这个问题来自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搜索变量的

1 个答案:

答案 0 :(得分:2)

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