Skip to content
Advertisement

Search and replace file content using shell script

I want to search and replace specific value in a file, here is the content of the file

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>

I want to replace DocumentRoot /var/www/html with DocumentRoot /var/www/html/centos

I tried the following

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

This is not working, can someone point me to the right direction.

Thanks

Advertisement

Answer

The line you are trying to replace is:

DocumentRoot "/var/www/html"

It contains double-quotes. The sed command does not include the double-quotes. Try:

sudo sed -i 's#DocumentRoot "/var/www/html"#DocumentRoot "/var/www/html/centos"#g' /etc/httpd/conf/httpd.conf
User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement