我正在尝试使用终端中的sed进行查找和替换.
在apache配置文件中,我正在尝试替换:
DocumentRoot /var/www
同
DocumentRoot /var/www/mysite.com/public_html
从命令行,不使用编辑器.我想用sed做这个,我尝试了各种迭代:
sudo sed -i 's/'DocumentRoot /var/www'/'DocumentRoot /var/www/mysite.com/public_html'/' /etc/apache2/sites-available/mysite.com
但是,这样做时我收到此错误:
sed: -e expression #1, char 14: unterminated s command
所以它在路径中的斜线上出错了.我该如何解决这个问题?
谢谢你的帮助
没有必要使用/
正则表达式分隔符.您可以使用#
或@
当您的正则表达式包含/
您需要转义时.
sed -i s#expr1#expr2#
Run Code Online (Sandbox Code Playgroud)
所以,它可能是:
sudo sed -i 's#DocumentRoot /var/www#DocumentRoot /var/www/mysite.com/public_html#' /etc/apache2/sites-available/mysite.com
Run Code Online (Sandbox Code Playgroud)
此外,由于您的substitution-argument本身包含空格,您需要将它们用单引号括起来.