Stream EDitor,流式编辑器
-非交互,基于模式匹配过滤及修改文本
-逐行处理,并将结果输出到屏幕
-可实现对文件的输出,输出,删除,替换,复杂,剪切,导入,导出等各种操作
主要用法
-格式1:前置命令 | sed [选项] ‘编辑指令’
-格式2: sed [选项] ‘编辑指令’文件 .. ..
常见命令选项
-n:屏蔽默认输出(全部文本)
-i:直接修改文件内容
-r:启用扩展的正则表达方,若与其他选项一起使用,应作为首个选项
条件,可以是行号或/正则/
-行号可以使用当个数字表示单行
-或者3,5表示连续的多行
-省掉条件,默认逐行处理全部文本
-匹配正则时,需要使用//
[root@server0 ~]# sed -n '2,4p' /etc/passwd 输出第2-4行
[root@server0 ~]# sed -n 'p' /etc/passwd 输出全部
[root@server0 ~]# sed -n '/root/p' /etc/passwd 输出包含root的行
基本动作指令
替换操作的分隔‘’/‘’可改用其他字符,如#,&等,便于修改文件路径。
小试牛刀:
1.打印zhy.txt的所有行
[root@server0 ~]# sed -n 'p' zhy.txt
2.打印zhy.txt的第2行
[root@server0 ~]# sed -n '2p' zhy.txt
3.打印zhy.txt的以zhu开头的行
[root@server0 ~]# sed -n '/^zhu/p' zhy.txt
4.打印zhy.txt的1~2行
[root@server0 ~]# sed -n '1,2p' zhy.txt
5.打印zhy.txt的总行数
[root@server0 ~]# sed -n '$=' zhy.txt
6.打印zhy.txt的第1行以后面的2行
[root@server0 ~]# sed -n '1,+2p' zhy.txt
1.删除zhy.txt的1到2行
[root@server0 ~]# sed '1,2d' zhy.txt
2.删除zhy.txt的包含hope的行
[root@server0 ~]# sed '/hope/d' zhy.txt
3.删除zhy.txt的以zhu开头的行
[root@server0 ~]# sed '/^zhu/d' zhy.txt
4.删除zhy.txt的以here结尾的行
[root@server0 ~]# sed '/here$/d' zhy.txt
5.删除zhy.txt的空行
[root@server0 ~]# sed '/^$/d' zhy.txt
替换文本
1.在zhy.txt把zhy替换aaa
[root@server0 ~]# sed -n 's/zhu/aaa/p' zhy.txt
2.在zhy.txt把每行中第2个h替换g
[root@server0 ~]# sed 's/h/g/2' zhy.txt
3.在zhy.txt把所有的h都替换ddd
[root@server0 ~]# sed 's/h/ddd/g' zhy.txt
4.在zhy.txt把所有的h都删掉
[root@server0 ~]# sed 's/h//g' zhy.txt
5.在zhy.txt把1到3行首行加上#
[root@server0 ~]# sed '1,3s/^/#/' zhy.txt
6.在zhy.txt把1到3行首行删掉#
[root@server0 ~]# sed '1,3s/^#//' zhy.txt