【shell】脚本修改、读取配置文件的值|shell配置文件conf处理

本文介绍了如何使用shell脚本修改、读取配置文件的值,包括替换/修改配置项、添加/删除字符、按行读取配置执行命令等操作。文中列举了多个示例,如修改配置项`multi_cluster_set_ha`,替换`PermitRootLogin`,添加/删除行首行尾字符,以及如何在sed中使用变量等。
摘要由CSDN通过智能技术生成

目录

修改配置项的值

读取配置项的值

替换/修改

在匹配行行首/行尾添加字符(#)

去掉匹配行行首/行尾字符(#)

#匹配行前加

#匹配行后加

#匹配行前后加

删除匹配行

替换/删除匹配的字符之间的内容

按行读取配置获取参数执行命令|shell读取配置文件

删除空格

如何在sed中使用变量

第一

第二


修改配置项的值

multi_cluster_set_ha = yes 改为multi_cluster_set_ha = no

命令:

sed -i 's/^参数名=.*/参数名=新值/' 配置文件路径

例子一:
要将vim /etc/onestor/onestor.conf中的

multi_cluster_set_ha = yes
handy_ha_needed = yes

改为:
multi_cluster_set_ha = no
handy_ha_needed = no

sed -i 's/^multi_cluster_set_ha.*\+=.*/multi_cluster_set_ha = no/' /etc/onestor/onestor.conf
sed -i 's/^handy_ha_needed.*\+=.*/handy_ha_needed = no/' /etc/onestor/onestor.conf

旧方案脚本:

sed -i 's/^multi_cluster_set_ha[[:space:]]\+=.*/multi_cluster_set_ha = no/' /etc/onestor/onestor.conf
sed -i 's/^handy_ha_needed[[:space:]]\+=.*/handy_ha_needed = no/' /etc/onestor/onestor.conf

因里面的[[:space:]] 代表匹配任意个空格(但不代表0个!!),遇到没有空格的就失败,所以用上面的替换,“.*”代表“”内任意个字符。

详细说明见文章末尾:
原文链接:https://blog.csdn.net/bandaoyu/article/details/120047612

读取配置项的值

获取“public_addr=172.17.31.109”等号左边的名字public_addr

item=`cat /etc/ceph/ceph.conf |grep -E 'public_addr'`&&echo ${item%%=*}

获取“public_addr=172.17.31.109”等号右边的值 72.17.31.109

line=`cat /etc/ceph/ceph.conf |grep -E 'public_addr'`&&echo ${line#*=}

替换/修改

PermitRootLogin no 替换成PermitRootLogin yes

sudo sed -i "s/PermitRootLogin no/PermitRootLogin yes/g" /etc/ssh/sshd_config 

在匹配行行首/行尾添加字符(#)

在每一行的行首/尾添加字符串

sed  -i 's/.*/行首添加内容&行尾添加内容/' 文件名

在匹配行的行首/尾添加字符串

在包含“STATD#u PORT”的行开头添加“#”注释符号

sed -i  '/STATD_PORT/s/^/#/' /tmp/file

在与“callout”匹配的行的末尾添加“your text”

sed  -i '/callout/s/$/your text/' /tmp/file

在以“STATD”开头的行的 末尾添加“your text”

sed  -i '/^STATD/s/$/your text/' /tmp/file

几点说明:

1."^"代表行首,"$"代表行尾
原文链接:https://blog.csdn.net/bandaoyu/article/details/120047612

去掉匹配行行首/行尾字符(#)

去掉行首#,"^"代表行首

sed -i '/have a nice day/ s/^#//'    a.txt 

 # /have a nice day/  代表匹配,s/^abcdf//  代表行首的abcdf字符串替换为后面两斜杠里的内容,这里为空,即删除。 

去掉行尾#,"$"代表行尾

sed -i '/have a nice day/ s/$#//'     a.txt

#匹配行前加

我的记法是a = after ,i = in front 

在匹配“2222222222”前面添加“3333333333”,我的记法是a = after ,i = in front 

sed -i '/2222222222/i\3333333333' test.txt

#匹配行后加

我的记法是a = after ,i = in front 

在匹配“2222222222”后面添加“3333333333”,我的记法是a = after ,i = in front 

sed -i '/2222222222/a\3333333333' test.txt

#匹配行前后加

加反斜杠只是为了容易区分,可以不用:

sed -i '/allow 361way.com/iallow www.361way.com' the.conf.file

sed -i '/allow 361way.com/aallow www.361way.com' the.conf.file

这就就可以很方便的看出要在某一行前或某一行后加入什么内容 。

删除匹配行

删除匹配到preSql的行

sed -i '/preSql/d' a.t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值