Apache 使用sed取消对httpd.conf中的行的注释

Apache 使用sed取消对httpd.conf中的行的注释,apache,bash,shell,config,zsh,Apache,Bash,Shell,Config,Zsh,我正在尝试编写一个小shell脚本,以完成在新安装的Mountain Lion上启用apache和php所需的步骤。我一直坚持的步骤是进入/etc/apache2/httpd.conf并取消这一行的注释:#LoadModule php5_module libexec/apache2/libphp5.so 从谷歌搜索到目前为止,我认为sed是实现这一点的方式,但我无法获得正确的语法。我试过这个: cd /etc/apache2 sudo sed -i '/s/#LoadModule php5_mo

我正在尝试编写一个小shell脚本,以完成在新安装的Mountain Lion上启用apache和php所需的步骤。我一直坚持的步骤是进入
/etc/apache2/httpd.conf
并取消这一行的注释:
#LoadModule php5_module libexec/apache2/libphp5.so

从谷歌搜索到目前为止,我认为sed是实现这一点的方式,但我无法获得正确的语法。我试过这个:

cd /etc/apache2
sudo sed -i '/s/#LoadModule php5_module libexec\/apache2\/libphp5.so/LoadModule php5_module libexec\/apache2\/libphp5.so' httpd.conf
我认为这将用未注释行替换注释行(避开斜杠)。但当我运行它时,我只返回以下消息,文件中没有结果:

sed:1:“httpd.conf”:h命令末尾的额外字符


我对这种类型的脚本编写有点不知所措,如何完成这项任务?

删除第一个
/

sed -i 's/...'
你可以用逗号

sed -i 's,#LoadModule php5_module libexec/apache2/libphp5.so,LoadModule php5_module libexec/apache2/libphp5.so,g'

正确的语法是

's/#LoadModule php5_module libexec\/apache2\/libphp5.so/LoadModule php5_module libexec\/apache2\/libphp5.so/' 
斜杠/可以由另一个字符更改(-例如),以避免转义斜杠 圆点。必须在模式(左部分)中转义,否则表示任何字符

's-#LoadModule php5_module libexec/apache2/libphp5\.so-LoadModule php5_module libexec/apache2/libphp5.so-'

还有另一种方法:

sudo sed -i '/#LoadModule php5_module libexec\/apache2\/libphp5.so/s/#//' httpd.conf

这给了我和以前一样的错误。。。我一定是做错了什么
sudo sed -i '/#LoadModule php5_module libexec\/apache2\/libphp5.so/s/#//' httpd.conf