0
我试图用sed和bash替换文件中的一行文本。这是我的代码。我认为我的语法可能只是关闭。httpd.conf中的bash sed替换
SED -e 'S /的DocumentRoot的/ var/www/html等/ s的/// USR /共享/ RT3/HTML /' /etc/httpd/conf/httpd.conf中
我试图用sed和bash替换文件中的一行文本。这是我的代码。我认为我的语法可能只是关闭。httpd.conf中的bash sed替换
SED -e 'S /的DocumentRoot的/ var/www/html等/ s的/// USR /共享/ RT3/HTML /' /etc/httpd/conf/httpd.conf中
当使用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/
没有工作,但你没明白我要做的。 –
这就是我想要的脚本。 #打开/etc/httpd/conf/httpd.conf将DocumentRoot“/ var/www/html”更改为DocumentRoot“/ usr/share/rt3/html”# –
要打开文件,进行更改并重新写入同一个文件,最好使用sed的'-i'标志(就地编辑)。试试这个: 'sed -i's_DocumentRoot/var/www/html_DocumentRoot/usr/share/rt3/html/_'/ etc/httpd/conf/httpd.conf' –