shell脚本中sed指令修改指定配置文件的内容

一、前言
当我们在进行自动化shell脚本编辑的时候,有时候需要进行编辑或者修改相应的配置文件。
那么sed是一个很不错的选择

二、sed介绍
sed是Linux下一款功能强大的非交互流式文本编辑器。
对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,灵活方便,适合大文件之类的编辑。

1、sed命令格式:

sed [参数] "command" 文件所在路径

2、常见参数:

-n∶ 不加n时,sed默认会输出所有文本内容,使用-n参数后只显示处理过的行但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶ 直接在指令列模式上进行 sed 的动作编辑;
-f∶ 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶ sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶ 直接对内容进行修改,不加-i时默认只是预览,不会对文件做实际修改 

3、常用命令:

a: 新增,a的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c: 取代,c的后面可以接字串,这些字串可以取代 n1,n2之间的行!
d: 删除,因为是删除啊,所以d后面通常不接任何咚咚;
i: 插入,i的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p: 打印,打印出匹配的内容,通常与-n选项和用
s: 取代,可以直接进行取代的工作哩!通常这个s的动作可以搭配正规表示法!

4、举例

#  删除某行
sed '1d' test.txt             #删除第一行 
sed '$d' test.txt         #删除最后一行
sed '1,2d' test.txt           #删除第一行到第二行
sed '2,$d' test.txt           #删除第二行到最后一行

#显示某行
sed -n '1p' test          #显示第一行 
sed -n '$p' test          #显示最后一行

#替换一行中的某部分
#格式:sed 's/要替换的字符串/新的字符串/g'(要替换的字符串可以用正则表达式)
sed 's/ru/bird/g'    #替换ru为bird
sed 's/ru//g'  test #替换ru为空

#插入
sed -i '$a bye' test     #在文件test1中最后一行直接输入"bye"
sed -i '1i\a' test     #在文件test1中第一行前插入一行"aaa"

#如果要添加一行,原来该行为空行
sed -i '36s/^/    client_max_body_size 50m;/g' nginx.conf

5、shell中常见用例
注:在shell中,可以采用先定义变量位置。
举例如下:
1、匹配对应的PIDFILE 和 BASEDIR 位置 并进行修改替换。
当我们在编写一键安装自动化脚本时经常用到

#!/bin/bash
AGENT_CONF=/usr/local/zabbix/misc/init.d/fedora/core/zabbix_agentd
sed -i -e 's/^PIDFILE=.*/PIDFILE=/usr/local/zabbix/$BINARY_NAME.pid' ${AGENT_CONF}
sed -i -e 's/^BASEDIR=.*/BASEDIR=/usr/local/zabbix/' ${AGENT_CONF}
sleep 5

2、sed命令替换目录
假设将test.conf中的server和host进行匹配,并且进行替换为目录
使用格式

sed -i -e "s:匹配参数=.*:匹配参数=替换后的内容:g" 对应的文件路径

1、假设test.sh脚本

#!/bin/bash
TEST_CONF=/home/steve/test.conf
sed -i -e "s:server=.*:server=/opt/zabbix:g" ${TEST_CONF}
sed -i -e "s:host=.*:host=/etc/passwd:g" ${TEST_CONF}

echo "test success!"

2、test.conf文件

# vim test.conf
server:111.111.111.111
host:222.222.222.222

3、然后执行sh test.sh

sh test.sh
# test success~

4、然后查看test.conf
发现已经成功
在这里插入图片描述

OK~~

  • 7
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值