现在我正在使用awk来搜索我放入正则表达式的字符串,但是我正在尝试使用"定义的变量"而是让我的代码更可重用。我要替换的代码是:
awk '
/lksdfjsalfjl/ { counter++}
END{}
' file
在线研究时我发现变量不能在/.../中使用。对替代方案有什么建议吗?
答案 0 :(得分:3)
使用~
进行正则表达式匹配:
awk -v x='lksdfjsalfjl' '$0~x {counter++} END{print counter+0}' file
更详细:
-v x='lksdfjsalfjl'
这定义了一个变量x
$0~x {counter++}
如果当前行$0
与x
中的正则表达式匹配,则会增加计数器。
如果您愿意,可以使用shell变量来设置awk变量:
a='lksdfjsalfjl'
awk -v x="$a" '$0~x {counter++} END{print counter+0}' file