sed是unix下的面向字符流的编辑器,即stream editor, 它是面向行的,以行为单位进行处理,同时,sed是非交互式的,一旦执行便要处理完整个文件。这篇文章主要介绍了Linux下通过sed命令对kv方式的配置文件进行修改,需要的朋友可以参考下

sed是unix下的面向字符流的编辑器,即stream editor, 它是面向行的,以行为单位进行处理,同时,sed是非交互式的,一旦执行便要处理完整个文件。

日常后台服务配置文件多以key-value的方式存在,例如ini文件、toml文件或一些自定义配置文件,当我们某些情况下需要编写自动化脚本对配置文件进行更改的时候,我们可以通过shell的sed命令进行正则匹配快速修改,十分简单快捷,很多“高级语言”编写的繁琐,下面主要列出两种比较常见的配置变更情况和命令参考例子:

用于测试的配置文件 test.conf

$ 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 current=$(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"

值不带引号的方式

CONF=test.conf
set_key_value() {
  local key=${1}
  local value=${2}
  if [ -n $value ]; then
    #echo $value
    local current=$(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 "fsync" "off"

总结

以上所述是小编给大家介绍的Linux下通过sed命令对kv方式的配置文件进行修改,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对爱安网网站的支持!

最新资讯
比特币再次暴涨,新“赌徒”入场?

比特币再次暴涨,新“赌

目前,比特币显然再次开启大幅反弹吸引赌徒入场,然后重复
马云"自曝"成功秘诀:"我对技术和营销一无所知"

马云"自曝"成功秘诀

我对技术一无所知,对营销一无所知,对(法律)东西一无所知,
芯片产业人才困境:800万本硕博毕业生仅3万入行

芯片产业人才困境:800

中国芯片产业在崛起的过程中,人才缺口是一个重要的制约
雷军再次亲自下场,小米手机的增长焦虑

雷军再次亲自下场,小米

小米手机要在十个季度内,重回国内市场第一!”2018 年 2
汽车零售梦碎!趣店宣布二季度起停止大白汽车的销售

汽车零售梦碎!趣店宣布

趣店将在战略上全面收紧其他业务,包括大白汽车业务,并宣
华为首度公开股权文档室:任正非有否决权,但从未用过

华为首度公开股权文档

江西生表示,任正非主要通过自己的思想和管理哲学来对华
最新文章
为docker中的nginx配置https的方法步骤

为docker中的nginx配

这篇文章主要介绍了为docker中的nginx配置https的方法
Docker中运行nginx并挂载本地目录到镜像中的方法

Docker中运行nginx并

这篇文章主要介绍了Docker中运行nginx并挂载本地目录
Docker nginx安装与配置挂载的方法

Docker nginx安装与配

这篇文章主要介绍了Docker nginx安装与配置挂载的方法
浅谈docker运行nginx为什么要使用daemon off

浅谈docker运行nginx

这篇文章主要介绍了浅谈docker运行nginx为什么要使用d
docker容器运行后退出(怎么才能一直运行)

docker容器运行后退出

这篇文章主要介绍了docker容器运行后退出(怎么才能一
shell脚本之nginx自动化脚本

shell脚本之nginx自动

今天小编就为大家分享一篇关于shell脚本之nginx自动化