Networking HowTos
Networking HowTos

Using sed to replace a string in a file

July 1, 2014 CentOS, Linux, Ubuntu

The ‘sed’ command can be used to easily replace all occurrences of one string in a text file, with another string.
For example:

sed -i "s/wordtofind/replacewithword/g" /path/to/file.txt

This command will find all occurrences of “wordtofind” and replace them on the fly with “replacewithword” in the file “/path/to/file.txt”.
The “-i” command switch specifies to edit the file in place, otherwise it will just display the output to the standard output. Run it without the “-i” switch to ensure it runs correctly, and makes the change you want, to prevent accidentally messing up your file.
You can also replace the whole line depending on your regular expression.
For example:

sed -i "s/^myhostname.*/myhostname = your.hostname.here/g" /etc/postfix/main.cf

Assuming you have root permissions, this will replace the whole “myhostname” line from /etc/postfix/main.cf, and replace it with “myhostname = your.hostname.here”. You could have simply matched against the existing value, but if you wanted to script something to run on many machines, you are better off matching the beginning of the config line, as you wont always know the exact value you want to change.

You Might Also Like