我有一个这样的文件:
function a() {
doSomething();
doSomethingElse();
}
现在,我需要将function a() {
和}
之间的所有文字替换为其他文字
我尝试了几种方法,但都失败了。我希望我能得到解释以及答案。
P.S。这个技巧需要兼容OS X和GNU Sed。
答案 0 :(得分:0)
您可以进行标准替换:
sed -i 's/\(\<\)doSomething()/\1somethingElse()/' your_file
我们使用单词boundary来分隔你的字符串:
\(\<\)doSomething()
然后我们用你的新字符串(包括捕获的字边界)替换该字符串:
\1somethingElse()
-i
标志代表:内联替换
我使用了这个示例文件:
function a() {
doSomething();
doSomething();
foo();doSomething();
}
输出:
function a() {
somethingElse();
somethingElse();
foo();somethingElse();
}
答案 1 :(得分:0)
sed '/^function a() {/,/}/{
/^[[:blank:]]*doSomething();/ c\
Replace with\
whaterver you want \
where new line are backslash \
at the end for multiline.
}' YourFile
doSomething
行替换为其他行}
行)