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方式的配置文件进行修改,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对爱安网网站的支持!

最新资讯
谁来接盘“腾讯”中层?

谁来接盘“腾讯”中层

不要大声责骂年轻人,他们会立刻辞职的;但是你可以往死里
阅文吴文辉:网文出海从内容输出逐渐变为模式输出

阅文吴文辉:网文出海从

阅文集团联席CEO吴文辉提到,IP开发进入了下半场,从看人
腾讯邹正宇:中国泛二次元用户达3.5亿 将发力漫动画

腾讯邹正宇:中国泛二次

邹正宇表示,95后和00后对于中国传统文化的喜爱超出想象
映客发布自愿性股份回购公告:不超过1亿港元

映客发布自愿性股份回

今日映客公布2018年度业绩的同时,也发布了自愿性股份回
BAT十年财报对比:AT争王、百度掉队

BAT十年财报对比:AT争

过去十年,没有任何一家企业,能撼动BAT三分天下的格局。
华为砸百亿建的东莞欧洲小镇,打卡攻略在此(组图)

华为砸百亿建的东莞欧

想要欧洲一日游?来华为松山湖基地。风景梦幻、设施豪华
最新文章
Win10系统安装MySQL8.0.13遇到的问题及解决方法

Win10系统安装MySQL8.

这篇文章主要介绍了Win10系统安装MySQL8.0.13遇到的问
Linux系统下快速配置HugePages的完整步骤

Linux系统下快速配置H

这篇文章主要给大家介绍了关于如何在Linux系统下快速
Linux中大内存页Oracle数据库优化的方法

Linux中大内存页Oracl

这篇文章主要给大家介绍了关于Linux中大内存页Oracle
详解Linx awk 入门教程

详解Linx awk 入门教

AWK是一种处理文本文件的语言,是一个强大的文本分析工
nginx 隐藏版本号与WEB服务器信息的解决方法

nginx 隐藏版本号与WE

这篇文章主要介绍了nginx 隐藏版本号与WEB服务器信息
CentOS 7中搭建NFS文件共享存储服务的完整步骤

CentOS 7中搭建NFS文

如果仅仅只是希望搭建一个linux之间进行文件共享的服