Using sed to edit config files
If you have a script which installs something, you often also want to automatically adjust a config file after installation. You can use the unix tool ‘sed’ for that.
Here are some examples, which assume that you have a parameter called ‘Test’ in the config file which is set to a value using ‘=’ character, e.g. test.conf
# This is some fake config file
Test = 123
Now you can use ‘sed’ to comment that line out, in or change the value:
# comment out
sed -i -e '/^[[:blank:]]*Test/ s/^#*/#/' test.conf
# comment in
sed -i -e '/^[[:blank:]]*#[[:blank:]]*Test/ s/^[[:blank:]]*#*//' test.conf
# set the value to 'abc'
sed -i -e '/^[[:blank:]]*Test[[:blank:]]*=/ s/=.*/= abc/' test.conf
With the ‘-i’ option the file is edited in-line. If you don’t use it the (modified) file content is printed out on the command line; good for testing.
The ‘[[:blank:]]’ fields are included so that the expression also works for messy config files, where you could have things like
# Test
Test =123
Test = 123
# etc.