I'm trying to write a build script for SLES/RHEL that modifies config files to conform to our company standards. Some configs are formatted as setting = value and some are just setting value. I'm using sed currently and feel I'm almost there but it's not working when there is no equals sign.
Current code: (Sorry I'm not very good at formatting these properly yet...)
$ cat test.conf
setting1 value1
setting2= value2
setting3 = value3
setting4 =value4
Current (test) function:
#!/bin/bash
replace () {
file=$1
var=$2
new_value=$3
sed -e "s/^$var=.*/$var = $new_value/" -e "s/^$var =.*/$var = $new_value/" -e "s/^$var.*/$var = $new_value/" -e "s/^$var /$var $new_value/" "$file"|grep $var
}
replace test.conf setting1 value1new
replace test.conf setting2 value2new
replace test.conf setting3 value3new
replace test.conf setting4 value4new
However I get this as a result:
$ ./functiontest
setting1 value1new= value1new
setting2 value2new= value2new
setting3 value3new= value3new
setting4 value4new= value4new
It works if I take out the last sed portion, but only where there is an equals sign.
Any ideas what I'm doing wrong?
setting1 value1newsetting2 = value2newsetting3 = value3newsetting4 = value4new"s/^${var} *=\{0,1\}.*/${var} = ${new_value}/"