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

发布时间:2025-04-12 点击:11
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

怎样结束云服务器上的进程
腾讯云服务器备案电话多少啊
云服务器怎么安装网心云
网站无法打开打了技术部-虚拟主机/数据库问题
备案被退回请帮忙重新填写应急手机号码为
Rancher发布K3s!史上最轻量K8s发行版,赋能边缘计算
阿里云云服务器怎么设置网关
浪潮王兴山:财务共享,企业数字化转型的有效突破口