使用shell脚本搜索和替换文件内容

时间:2016-04-09 14:03:47

标签: linux bash shell centos

我想搜索并替换文件中的特定值,这是文件的内容

filename: /etc/httpd/conf/httpd.conf
#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
#
<Directory />
    AllowOverride none
    Require all denied
</Directory>

#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"

#
# Relax access to content within /var/www.
#
<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

我想将DocumentRoot /var/www/html替换为DocumentRoot /var/www/html/centos

我尝试了以下

sudo sed -i "s#DocumentRoot /var/www/html#DocumentRoot /var/www/html/centos#g" /etc/httpd/conf/httpd.conf

这不起作用,有人能指出我正确的方向。

由于

2 个答案:

答案 0 :(得分:1)

您要替换的行是:

DocumentRoot "/var/www/html"

它包含双引号。 sed命令不包含双引号。尝试:

sudo sed -i 's#DocumentRoot "/var/www/html"#DocumentRoot "/var/www/html/centos"#g' /etc/httpd/conf/httpd.conf

答案 1 :(得分:0)

没关系,我想通了,我失去了双引号,跟着命令工作

sudo sed -i 's#DocumentRoot "/var/www/html"#DocumentRoot "/var/www/html/centos"#g' /etc/httpd/conf/httpd.conf