#!/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"
并没有发生任何事情。我哪里错了?
答案 0 :(得分:2)
尝试以下awk脚本:
{
print gensub(/([_a-zA-Z]*)\.methodName\(\)/, \
"_newClass.methodCall(\\1.newMethodName(),\\1)", "g")
}
您忘记打印gensub
的结果。默认情况下它不会修改$ 0.