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方式的配置文件进行修改,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对华域联盟网站的支持!
相关文章
-
Ubuntu Server 16.04安装MySQL设置远程访问出现问题的完美解决方
Ubuntu 16.04安装MySQL及需要其他主机远程连接MySQL时的设置问题。在安装过程中会出现各种奇葩问题,下面小编给大家带来了Ubuntu Server 16.04安装MySQL设置远程访问出现问题的完美解决方案(error:10061),一起看看吧2016-10-10
-
确保Linux VPS及服务器更加安全之Xshell设置密钥登录
这篇文章主要介绍了Xshell设置密钥登录确保Linux VPS及服务器更加安全,需要的朋友可以参考下2016-10-10
声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

最新评论