shell KeyValue文件值的替换和获取(sed)

配置文件

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"

参考文档

https://www.jb51.net/article/150677.htm

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值