如果有人对正则表达式有好处,替换字符串和bash - 你可以帮我一个大忙:
我在一个目录中有一堆源文件,这些文件在不同的地方都有。该行可能前面有空格。
RELEASE_AND_NIL(_theNameOfAVariable);
我想转换所有出现的内容,用以下内容覆盖文件:
[_ theNameOfAVariable release];
..有什么指针吗?我想有人告诉我如何在sed之前做到这一点,但我忘记了很久以前。
由于
修改
我最后使用的实际命令是:(感谢@fardjad)
find . -name '*.m' -print0 | xargs -0 sed -i "" "s/RELEASE_AND_NIL(\(.*\))/[\1 release\]/g"
答案 0 :(得分:1)
您可以使用sed -i
执行就地替换,正则表达式替换模式为:
s/RELEASE_AND_NIL\((.*?)\)/\[\1 release\]/g
所以你可以这样做:
sed -ie "s/RELEASE_AND_NIL(\(.*\))/[\1 release\]/g" /path/to/your/file
如果您有大量源文件,可以使用find
和xargs
:
find . -type f -print0 | xargs -0 sed -ie "s/RELEASE_AND_NIL(\(.*\))/[\1 release\]/g"
答案 1 :(得分:0)
sed -r 'RELEASE_AND_NIL\(([^(]+)\)/[\1 release]/' your_file.txt > target_file.txt
答案 2 :(得分:0)
如果我理解正确_theNameOfAVariable可能是任何东西,那么这应该做你需要的:
sed -e 's/ *RELEASE_AND_NIL(\(.*\));/[\1 release];/'