Linux下通过sed命令对kv方式的配置文件进行修改

 更新时间:2018年11月12日 16:45:38   投稿:mrr  
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方式的配置文件进行修改,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • ubuntu20.04中文输入法安装步骤

    ubuntu20.04中文输入法安装步骤

    这篇文章主要介绍了ubuntu20.04中文输入法安装步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Linux 中有效用户组和初始用户组的实现

    Linux 中有效用户组和初始用户组的实现

    这篇文章主要介绍了Linux 中有效用户组和初始用户组的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • centos通过yum安装php的教程

    centos通过yum安装php的教程

    这篇文章主要介绍了centos通过yum安装php的教程,本文给大家提到了CentOS 7下Yum安装PHP7.2步骤,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • CentOS7修改服务器系统时间的方法

    CentOS7修改服务器系统时间的方法

    服务器上的系统时间不对,比实际的UTC快了将近63分钟。在这里小编给大家分享下系统时间更正的过程,对centos修改服务器时间的知识感兴趣的朋友参考下吧
    2016-10-10
  • 浅谈Linux下修改/设置环境变量JAVA_HOME的方法

    浅谈Linux下修改/设置环境变量JAVA_HOME的方法

    这篇文章主要介绍了浅谈Linux下修改/设置环境变量JAVA_HOME的方法,环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数。环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。感兴趣的可以了解一下
    2020-07-07
  • CentOS 7.4下安装Oracle 11.2.0.4数据库的方法

    CentOS 7.4下安装Oracle 11.2.0.4数据库的方法

    本篇文章主要介绍了CentOS 7.4下安装Oracle 11.2.0.4数据库的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 在linux下玩转带有超时时间的connect函数

    在linux下玩转带有超时时间的connect函数

    今天小编就为大家分享一篇关于在linux下玩转带有超时时间的connect函数,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • 虚拟机里Centos7的IP地址查看方法

    虚拟机里Centos7的IP地址查看方法

    这篇文章主要为大家详细介绍了在虚拟机里Centos7的IP地址查看方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • Linux有限状态机FSM的理解与实现

    Linux有限状态机FSM的理解与实现

    这篇文章主要帮助大家理解与实现Linux有限状态机FSM,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 让Apache Shiro保护你的应用

    让Apache Shiro保护你的应用

    本文介绍的Apache Shiro,是一个不同寻常的Java安全框架,为保护应用提供了简单而强大的方法。本文还解释了Apache Shiro的项目目标、架构理念以及如何使用Shiro为应用安全保驾护航
    2014-10-10

最新评论