Configuration.xml
在位置(行)23处有“mysearchstring
”。
如果我使用以下语句,则返回第23行
awk '/"mysearchstring"/{print NR}' Configuration.xml
但是,如果我使用指定的变量,则不返回任何内容
str="mySearchString";awk '/$str/{print NR}' Configuration.xml
有人能告诉我第二个陈述中的错误吗?
答案 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