• 售前

  • 售后

热门帖子
入门百科

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

[复制链接]
普通人物怨 显示全部楼层 发表于 2021-10-25 20:10:02 |阅读模式 打印 上一主题 下一主题
sed是unix下的面向字符流的编辑器,即stream editor, 它是面向行的,以举动单位举行处理惩罚,同时,sed是非交互式的,一旦实行便要处理惩罚完整个文件。
日常后台服务设置文件多以key-value的方式存在,例如ini文件、toml文件或一些自界说设置文件,当我们某些情况下必要编写自动化脚本对设置文件举行更改的时间,我们可以通过shell的sed下令举行正则匹配快速修改,非常简单快捷,淘汰许多“高级语言”编写的繁琐,下面重要列出两种比较常见的设置变更情况和下令参考例子:
用于测试的设置文件 test.conf
  1. $ cat test.conf
  2. max.connections = 100
  3. test.log_path = "/tmp/test.log"
  4. fsync=on
复制代码
值带引号的方式
  1. #!/bin/bash
  2. CONF=test.conf
  3. set_key_value() {
  4.   local key=${1}
  5.   local value=${2}
  6.   if [ -n $value ]; then
  7.     #echo $value
  8.     local current=$(sed -n -e "s/^\($key = '\)\([^ ']*\)\(.*\)$/\2/p" $CONF) # value带单引号
  9.     if [ -n $current ];then
  10.       echo "setting $CONF : $key = $value"
  11.       value="$(echo "${value}" | sed 's|[&]|\\&|g')"
  12.       sed -i "s|^[#]*[ ]*${key}\([ ]*\)=.*|${key} = '${value}'|" ${CONF}
  13.     fi
  14.   fi
  15. }
  16. set_key_value "max.connections" "1024"
  17. set_key_value "test.log_path" "/data/logs/test.log"
复制代码
值不带引号的方式
  1. CONF=test.conf
  2. set_key_value() {
  3.   local key=${1}
  4.   local value=${2}
  5.   if [ -n $value ]; then
  6.     #echo $value
  7.     local current=$(sed -n -e "s/^\($key = \)\([^ ']*\)\(.*\)$/\2/p" $CONF) # value不带单引号
  8.     if [ -n $current ];then
  9.       echo "setting $CONF : $key = $value"
  10.       value="$(echo "${value}" | sed 's|[&]|\\&|g')"
  11.       sed -i "s|^[#]*[ ]*${key}\([ ]*\)=.*|${key} = ${value}|" ${CONF}
  12.     fi
  13.   fi
  14. }
  15. set_key_value "fsync" "off"
复制代码
总结
以上所述是小编给大家先容的Linux下通过sed下令对kv方式的设置文件举行修改,盼望对大家有所帮助,假如大家有任何疑问请给我留言,小编会实时复兴大家的。在此也非常感谢大家对脚本之家网站的支持!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作