现在我正在使用 awk 来搜索我放入正则表达式中的字符串,但是我正在尝试使用“定义的变量”来代替使我的代码更可重用。我要替换的代码是:
awk '
/lksdfjsalfjl/ { counter++}
END{}
' file
在网上搜索时,我发现一个变量不能在/.../中使用。您对替代方案有什么建议吗?
最佳答案
使用~
进行正则匹配:
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
关于linux - 该怎么做而不是 awk 中的正则表达式 exp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31061528/