Linux下通过sed命令对kv方式的配置文件进行修改
时间:2022-07-27
本文章向大家介绍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=
local value=
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=
local value=
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方式的配置文件进行修改,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站事(zalou.cn)网站的支持!
- Sickle:推荐一款优质ShellCode开发工具
- 看我教你如何修改QQ安装包实现绕过QQ语音红包验证来领红包
- “奇幻熊”(APT28)组织最新攻击
- GDB调试CVE-2018-5711 PHP-GD拒绝服务漏洞
- 高效与争议并存:大规模自动化渗透工具AutoSploit
- Android应用测试速查表
- ADB配置提权漏洞(CVE-2017-13212)原理与利用分析
- Fuzz自动化Bypass软WAF姿势
- Web黑盒渗透思路之猜想
- ZZCMS v8.2 最新版SQL注入漏洞
- 一款轻量级Web漏洞教学演示系统(DSVW)
- 使用Burpsuite代理和pypcap抓包进行抢红包的尝试
- 基于WAVSEP的靶场搭建指南
- 【干货】大数据量下,58同城mysql实践!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 手把手教你用Matplotlib画一个小清新配色的商业图表
- 高并发场景下锁的使用技巧
- Struts2第四天:Struts2的拦截器和标签库
- kubernete编排技术八:使用operator管理有状态应用
- Spring第一天:Spring的概述、SpringIOC入门(XML)、Spring的Bean管理、Spring属性注入
- Flink的处理背压原理及问题-面试必备
- Spring第二天:Spring的IOC的注解方式、Spring的AOP开发(XML)
- OpenCV还能实现这种效果? | 视频防抖技术
- 迁移到 Go Modules
- 使用docker 搭建redis的哨兵机制
- 使用docker 搭建redis的主从复制
- 使用Python判断文件下是否有空文件夹
- MySQL 设置用户可以远程连接
- MySQL关于character_set 设置为uft8问题
- nohup 退出终端不退出任务