配置文件
db.ini
PGIp=169.254.253.114
PGPort=5432
PGUserName=postgres
PGPassWord=EN(postgres)
替换某个Key的值
configFile=db.ini
key=PGPassWord
sed -i "s|^[#]*[ ]*${key}\([ ]*\)=.*|${key} = ${PGPassWord}|" ${configFile}
获取某个字段的值
configFile=db.ini
key=PGPassWord
sed -n -e "s/^\(${key}=\)\([^ ']*\)\(.*\)$/\2/p" ${configFile}
获取EN里面的值
configFile=db.ini
key=PGPassWord
grep ${key} ${configFile} |awk -F "$1=EN\(" '{print $2}' |awk -F "\)" '{print $1}' |sed 's/\r//'
参考代码
$ cat test.conf
max.connections = 100
test.log_path = "/tmp/test.log"
fsync=on
#!/bin/bash
CONF=test.conf
set_key_value() {
local key=${1}
local value=${2}
if [ -n $value ]; then
#echo $value
local =$(sed -n -e "s/^\($key = '\)\([^ ']*\)\(.*\)$/\2/p" $CONF) # value带单引号
if [ -n $current ];then
echo "setting $CONF : $key = $value"
value="$(echo "${value}" | sed 's|[&]|\\&|g')"
sed -i "s|^[#]*[ ]*${key}\([ ]*\)=.*|${key} = '${value}'|" ${CONF}
fi
fi
}
set_key_value "max.connections" "1024"
set_key_value "test.log_path" "/data/logs/test.log"
参考文档