我的.bash_profile文件中有这一行:
if [ -f ~/.bash_profile.tomcat_8.5 ]; then . ~/.bash_profile.tomcat_8.5; fi
我想用替换整个生产线
if [ -f ~/.bash_profile.tomcat ]; then . ~/.bash_profile.tomcat; fi
我很难处理所有的/,然后我学会了检查这个网站,你可以使用任何带有sed的分隔符,这很方便。但是,我仍然不能做我想做的事。
以下是我尝试的,使用+分隔符:
sed -i "s+if [ -f ~/.bash_profile.tomcat_8.5 ]; then . ~/.bash_profile.tomcat_8.5; fi+if [ -f ~/.bash_profile.tomcat ]; then . ~/.bash_profile.tomcat; fi+" /tmp/.bash_profile
我甚至尝试过使用变量:
Delete='if [ -f ~/.bash_profile.tomcat_8.5 ]; then . ~/.bash_profile.tomcat_8.5; fi'
Add='if [ -f ~/.bash_profile.tomcat ]; then . ~/.bash_profile.tomcat; fi'
sed -i "s+$Delete+$Add+g" /tmp/.bash_profile
我试过用{}绕过变量,用单引号,双引号。我想知道这是一个我无法解决的基本问题,是因为我错过了一些简单的东西,还是因为所有特定的关键词/字符而导致了更深层次的问题。
提前谢谢。
[
]
在正则表达式中有特殊意义(在.
中也有,在扩展正则表达式中也有+
,但这对这里没有影响(。阅读正则表达式。用反斜杠转义特殊字符。
Do:
sed 's!something [ something ] something.something!!'