我正在尝试使用 sed 和 bash 替换文件中的一行文本。这是我的代码。我认为我的语法可能只是关闭了。
sed -e 's/DocumentRoot /var/www/html/s///usr/share/rt3/html/' /etc/httpd/conf/httpd.conf
我正在尝试使用 sed 和 bash 替换文件中的一行文本。这是我的代码。我认为我的语法可能只是关闭了。
sed -e 's/DocumentRoot /var/www/html/s///usr/share/rt3/html/' /etc/httpd/conf/httpd.conf
使用 sed 和文件路径时,更容易避免使用“/”分隔符,否则每次都会转义它。这种“栅栏”格式让人难以阅读。
假设您尝试用“DocumentRoot /usr/share/rt3/html/”替换“DocumentRoot /var/www/html”,试试这个:
sed 's_DocumentRoot /var/www/html_DocumentRoot /usr/share/rt3/html/_' /etc/httpd/conf/httpd.conf
例子:
~> echo "DocumentRoot /var/www/html" | sed 's_DocumentRoot /var/www/html_DocumentRoot /usr/share/rt3/html/_'
DocumentRoot /usr/share/rt3/html/
~>
编辑:根据您的评论,您想要 1)打开文件,2)替换字符串,以及 3)保存对原始文件的更改。在这种情况下,您可以使用 sed 的-i
标志(就地编辑)。尝试这个:
sed -i 's_DocumentRoot /var/www/html_DocumentRoot /usr/share/rt3/html/_' /etc/httpd/conf/httpd.conf
例子:
~> echo "DocumentRoot /var/www/html" > file
~> cat file
DocumentRoot /var/www/html
~> sed -i 's_DocumentRoot /var/www/html_DocumentRoot /usr/share/rt3/html/_' file
~> cat file
DocumentRoot /usr/share/rt3/html/