我不知道如何将正则表达式作为参数传递给函数。
如果我传递一个字符串,就可以了,
我有以下 awk 文件,
#!/usr/bin/awk -f
function find(name){
for(i=0;i<NF;i++)if($(i+1)~name)print $(i+1)
}
{
find("mysql")
}
Run Code Online (Sandbox Code Playgroud)
我做类似的事情
$ ./fct.awk <(echo "$str")
Run Code Online (Sandbox Code Playgroud)
这工作正常。
但是当我调用 awk 文件时,
{
find(/mysql/)
}
Run Code Online (Sandbox Code Playgroud)
这不起作用。
我究竟做错了什么?
谢谢,
埃里克·J。
您不能(不应该)将正则表达式常量传递给用户定义的函数。在这种情况下,您必须使用动态正则表达式。喜欢find("mysql")
如果你这样做find(/mysql/),awk 做的是:find($0~/mysql/)所以它传递一个0或1到你的find(..)函数。
有关详细信息,请参阅此问题。
还有 http://www.gnu.org/software/gawk/manual/gawk.html#Using-Constant-Regexps
部分:6.1.2 使用正则表达式常量