≡ Menu

Sed: Find and Replace The Whole Line [ Regex ]

I have a line as follows in squid.conf file. My sever is hosted in a cloud:

acl verizonfios src

My ISP will force an IP address change every week or two. I would like to replace them with a new IP

acl verizonfios src

How do I replace the line starting with "acl verizonfios" with new IP address using sed and ssh?

Tutorial details
DifficultyEasy (rss)
Root privilegesYes
Estimated completion timeN/A

The sed syntax is as follows to match the line starting with "acl verizonfios" and replace the whole line:

sed -i 's/find/replace/' file
sed -i 's/^acl verizonfios.*/acl verizonfios src' file

In this example, replace an IP address with

sed -i 's/^acl verizonfios.*/acl verizonfios src' /etc/squid/squid.conf

You can execute the sed command using ssh:

ssh root@your.server.at.cloud sed -i 's/^acl verizonfios.*/acl verizonfios src' /etc/squid/squid.conf
ssh root@your.server.at.cloud /usr/sbin/squid -k reconfigure

Sample shell script

# Author: nixCraft <www.cyberciti.biz> - GPL v2.x+
# -------------------------------------------------
## cloud server name ##
## Get your public IP ##
_myip="$(/bin/curl ifconfig.me)"
_cmd1="/bin/sed -i 's/^acl verizonfios.*/acl verizonfios src ${_myip}/' /etc/squid/squid.conf"
_cmd2="/usr/sbin/squid -k reconfigure"
## connect to the remote box 
## update the proxy server 
## reload the proxy server
/bin/ssh ${_ruser}@${_rserver} "$_cmd1"
/bin/ssh ${_ruser}@${_rserver} "$_cmd2"
Tweet itFacebook itGoogle+ itPDF itFound an error/typo on this page?

{ 2 comments… add one }

  • thameera December 14, 2012, 4:45 pm

    All this time I was going to vi and doing :s/find/replace/g there. sed -i seems to be much easier.

  • goj September 11, 2015, 11:45 pm

    I wanted to change the name of my raspberrypi hostname in a conf file, but the above example did not work for me (it inserted the new name at the beginning, but left the old name, too)

    Here is the command I ended up using:

    sed -i “/^host =/c\host = myrpi” inputs_test.conf

    this changed:

    host = raspberrypi


    host = myrpi

Leave a Comment