1
grep -Hrl DataLogger /testFolder/ | xargs sed /,$/{N -e"s|DataLogger::copyStringLength(\(dl.[a-zA-Z0-9]\+\)..\(.\+\)(.c_str()\)\+\(,\s*.*;)|IDataLogger::copyString(\2, \1);|g"}
我正在使用上述腳本將方法調用從DataLogger::copyStringLength(dest, source, length)
更改爲IDataLogger::copyString(source, dest)
。sed未打印到位
上面的腳本總體上看起來像我想要的那樣,並且正在替換方法而不管方法調用中的換行符。但就目前而言,我只是在控制檯上打印,而不是在文件中就地打印。我已經嘗試在sed調用中的幾個地方放置-i選項,並且它總是返回一個錯誤。
任何反饋將不勝感激。
對於那些好奇,爲什麼和在那裏換行顯示,有3種不同的格式,這種方法(根據變量名的長度)
copyStringLength(varA, varB, varC);
copyStringLength(varA, varB,
varC);
copyStringLength(varA,
varB,
varC);
你在OS X上做這個嗎? – Barmar
如果您是,請參閱http://stackoverflow.com/questions/4247068/sed-command-with-i-option-failing-on-mac-but-works-on-linux/4247319#4247319和http:// stackoverflow.com/questions/7573368/in-place-edits-with-sed-on-os-x/7573438#7573438 – Barmar
我們在RHEL6上運行。雖然看第一個問題,如果有辦法壓制備份文件,那會很好。沒有必要,但可以節省我幾次查找/刪除。 –