0

我正在尝试使用 sed 和 bash 替换文件中的一行文本。这是我的代码。我认为我的语法可能只是关闭了。

sed -e 's/DocumentRoot /var/www/html/s///usr/share/rt3/html/' /etc/httpd/conf/httpd.conf

4

1 回答 1

0

使用 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/
于 2013-07-17T19:32:46.790 回答