与awk gensub()的正则表达式不匹配

时间:2013-12-10 19:15:32

标签: regex bash awk

#!/bin/bash

t="_tmp"

for f in $(find . -name '*.java') 
do

  tf=$f$t #temp file name
  awk '{gensub("/([_a-zA-Z]*)\.methodName\(\)/", "_newClass.methodCall\(\\1\.newMethodName\(\),\\1\)", "g");}' $f > $tf && mv $tf $f

done

基本上我正在寻找

的实例

xxx.methodName()

并尝试用

替换它

_newClass.methodCall(xxx.newMethodName(),XXX)

其中xxx是在methodName调用之前发生的任何变量名。现在我有一个包含

的文件
"stuff"
m.methodName()
"stuff"{m.methodName()
"stuff"

并没有发生任何事情。我哪里错了?

1 个答案:

答案 0 :(得分:2)

尝试以下awk脚本:

{
    print gensub(/([_a-zA-Z]*)\.methodName\(\)/,            \
    "_newClass.methodCall(\\1.newMethodName(),\\1)", "g")        
}

您忘记打印gensub的结果。默认情况下它不会修改$ 0.