前言
在Linux中无论是配置网络配置,还是去处理基本的运维,需要时间较长,尤其在进行某些复杂繁琐的操作时,更加耗时,sed编辑器可以对文件直接编辑,结合shell脚本来实现自动化。
一、sed编辑器的概念
概念
sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
sed编辑器可以根据命令来处理数据流的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中。
sed工作流程
sed的工作流程主要包括三个步骤,读取 执行和显示三个过程
读取:sed从输入流(文件 管道 标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间)
执行:默认情况下,所有的sed命令都在模式空间中顺序地进行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行。
显示:发送修改后的内容到输入流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成前,上述过程将重复执行,直至所有的内容都被处理。
在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。
二、使用格式和命令书写
1.命令格式
sed -e ‘要执行的操作’ 文件1 文件2
sed -n -e ‘要执行的操作’ 文件1 文件2
sed -f 脚本文件 文件1 文件2
sed -i -e ‘要执行的操作’ 文件1 文件 2
在脚本中可以使用以下的格式
sed -e ‘n{
操作
。。。
}’ 文件1 文件2 。。。
常用选项
-e 表示指定命令来处理输入的文件,只有一个操作命令时可省略,一般在执行多个操作命令使用
-f 表示用指定的脚本文件来处理输入的文本文件
-h 显示帮助
-n 禁止sed编辑器输出,但可以与p命令一起使用完成输出。
-i 直接修改目标文本文件。
sed的帮助界面
sed在使用时 -i 是使用的最多的 可以直接修改文件
常用的操作
a:追加 向匹配行后面插入内容
c:更改 更改匹配行的内容
i:插入 向匹配行前插入内容
d:删除 删除匹配的内容
s:替换 替换掉匹配的内容
p:打印 打印出匹配的内容,通常与-n选项和用
=:用来打印被匹配的行的行号
l(小写L):打印数据流中的文本和不可打印的ascll字符
使用-a在第三行增加一个字符
使用-i来在行之前插入一个字符
在行尾之前插入字符
替换行中的字符
删除行的内容
sed除了基本的增删改查后,还可以输出(打印)文本中指定的行
打印最后一行
输出从第三行开始 一直到末行的内容
输出末行的行号
打印偶数行
打印奇数行
三 shell脚本中使用sed
源文件中有空行 可以shell脚本来去掉空行
脚本代码
输出结果
dns一键部署代码