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发行版,赋能边缘计算阿里云云服务器怎么设置网关浪潮王兴山:财务共享,企业数字化转型的有效突破口