sed工具
一丶sed工具–Stream EDitor 流式编辑器
1.特点:
非交互式,基于模式匹配过滤及修改文本
逐行处理 ,输出结果
可以实现对文本的增删改查等操作
我们的脚本有时候是自动化的 如果有时候需要修改配置文件 用vim必须要有人操作,实行不了自动化运维,这时候就可以用sed工具实现.
2.格式
格式1: 前置命令 | sed [选项] ‘编辑指令’
格式2: sed [选项] ‘编辑指令’ 文件…
编辑指令是可以输入定址符,确定在那一行处理
3.常见的选项:
-n 屏蔽默认输出 //因为sed修改之后会有默认输出,在输出就会显示两遍
-i 直接修改文件内容 //如果不加-i 会显示修改后的文件内容,但不会直接修改
-r 可以使用扩展正则表达式 //sed默认不支持扩展正则
4.常见的指令:
p 输出
d 删除
s 字符串的替换
二丶实例—注意这里的一切修改都需要加-i 否侧没有真正的修改
1.输出文本
= 显示行号 $最后 ^开头
1输出所有行,相当于cat
sed -n 'p' a.txt
2输出指定行
sed -n '4p' a.txt //输出第四行
sed -n '1p;3p' a.txt //输出第一第三行
sed -n '2,5p' a.txt //输出2-5行 包括第二行第五行
sed -n '4,+10p' a.txt //输出第四行以及后面的十行
3输出一特定字符开头的行
sed -n '/^bin/p' a.txt //输出以bin开头的行
4输出文件的行数
sed -n '$=' a.txt
5显示奇数行
sed -n '1~2p' a.txt
6输出偶数行
sed -n '2~2p' a.txt
2.删除文本
! 代表取反
1删除指定行
sed '3,5d' a.txt //删除3-5行
2删除带指定字符的行
sed '/xml/d' a.txt //删除所有带xml的行
3删除不包含指定字符的行
sed '/xml/!d' a.txt // ! 表示取反
4删除以指定字符开头的行
sed -n '/^bin/d' a.txt
5删除所有空行
sed '/^$/d' a.txt
6删除文件最后一行
sed '$d' a.txt
3.文本替换
格式 s/// 最后+g 代表文中所有 s/// 的替换符可以换成s### s!!!
1将每行第一个xml替换为XML
sed 's/xml/XML/' a.txt
2将每行中的第三个xml替换为XML
sed 's/xml/XML/3' a.txt
3将所有xml替换为XML
sed 's/xml/XML/g' a.txt
4删除所有xml(将xml替换为空)
sed 's/xml//g' a.txt
5将4-7行注释掉
sed '4,7s/^/#/' a.txt
6把以#an开头的行的注释去掉
sed 's/#an/an/' a.txt
三丶文本快的应用
在文本内插入新行 如何插入多行文本 如何替换指定的文本
1.操作符
i 行前插入文本
a 行后插入文本
c 替换当前行
2.处理单行文本
sed '2ixx' a.txt //在第二行之前添加xx
sed '2axx' a.txt //在第二行之后添加xx
sed '2cxx' a.txt //把第二行替换为xx
3.处理多行文本
\n 换行符 \强制换行
sed -n '2cxx\nyy' a.txt
[root@desktop0 opt]# sed -n '2cxx\
> yy' a.txt
xx
yy