带搜索字符串变量的awk命令

时间:2014-02-25 12:54:21

标签: awk

Configuration.xml在位置(行)23处有“mysearchstring”。

如果我使用以下语句,则返回第23行

awk '/"mysearchstring"/{print NR}' Configuration.xml 

但是,如果我使用指定的变量,则不返回任何内容

str="mySearchString";awk '/$str/{print NR}' Configuration.xml

有人能告诉我第二个陈述中的错误吗?

3 个答案:

答案 0 :(得分:2)

您需要使用-v将变量传递给awk,然后使用~比较:

awk -v myvar="$str" '$0 ~ myvar {print NR}' Configuration.xml

实施例

$ cat a
hello
how
are 
you

$ awk '/e/ {print NR}' a <---- hardcoded
1
3

$ awk -v myvar="e" '$0~myvar {print NR}' a <---- through variable
1
3

答案 1 :(得分:0)

您可以使用命令行选项-v将变量传递给awk

awk -v searchstr="$str" '$0 ~ searchstr { print NR }'

答案 2 :(得分:0)

或者你可以在代码之后传递这样的变量:

awk '$0~s {print NR}' s="$str" file