2013-07-17 72 views
0

我试图用sed和bash替换文件中的一行文本。这是我的代码。我认为我的语法可能只是关闭。httpd.conf中的bash sed替换

SED -e 'S /的DocumentRoot的/ var/www/html等/ s的/// USR /共享/ RT3/HTML /' /etc/httpd/conf/httpd.conf中

回答

0

当使用sed和文件路径,避免使用“/”分隔符更容易,否则每次都会转义它。这种“栅栏”格式让阅读变得很糟糕。

假设你试图取代 “的DocumentRoot在/ var/www/html等” 用 “的DocumentRoot在/ usr /共享/ RT3/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/ 
+0

没有工作,但你没明白我要做的。 –

+0

这就是我想要的脚本。 #打开/etc/httpd/conf/httpd.conf将DocumentRoot“/ var/www/html”更改为DocumentRoot“/ usr/share/rt3/html”# –

+0

要打开文件,进行更改并重新写入同一个文件,最好使用sed的'-i'标志(就地编辑)。试试这个: 'sed -i's_DocumentRoot/var/www/html_DocumentRoot/usr/share/rt3/html/_'/ etc/httpd/conf/httpd.conf' –