2
#!/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
基本上我尋找正則表達式使用awk gensub()不匹配
xxx.methodName()
的情況下,並試圖與
_newClass.methodCall(來代替它XXX .newMethodName(),xxx)
其中xxx是在methodName調用之前發生的任何變量名稱。現在我有一個文件,其中包含
"stuff"
m.methodName()
"stuff"{m.methodName()
"stuff"
並沒有發生任何事情。我哪裏錯了?
謝謝!我注意到我的轉義序列和引號也是關閉的。我很感激幫助。 – user2041602
@ user2041602不客氣。 –
您應該使用'[_ [:alpha:]]'而不是'[_a-zA-Z]'來避免區域設置問題(不要問我是什麼 - 它們存在但我總是使用正確的字符類,所以我不需要考慮它們)。另外,雖然他沒有顯示它,但我懷疑OP可能真的需要'[[:alpha:] _] [[:alnum:] _] *',因爲他似乎在尋找類名,不能爲空,必須以字母或下劃線開頭,並可包含數字。 ''[[:alnum:] _]'可以縮寫爲'\ w',因爲無論如何,如果您關心,那麼您仍在使用gawk。 –