sed的使用:
sed的使用
- 一、sed
- 1.定义:
- 2.工作流程:读取,执行,显示。
- 3.基本操作格式:
- 4.sed操作符:
- 5.扩展:
一、sed
1.定义:
一种流编辑器,会在编辑器处理数据之前,基于预先提供的一组规则来编辑数据流。可以根据命令来处理数据流中的数据,要么在命令行中输出,要么存储在命令文本文件中。
2.工作流程:读取,执行,显示。
(1)读取:sed从输入流中(文件,管道,标准输入)中读取一行内容,并存到临时缓冲区中(又称模式空间)。
(2)执行:默认情况下,所有sed命令都在模式空间中顺序执行,除非指定新的地址,否则sed命令将在所有行上依次执行。
(3)显示:发送修改后的内容到输出流,在发送数据后,模式空间会被清空。在所有的文件内容都被处理完成之前,上述内容将重复执行。
3.基本操作格式:
(1)sed -e ‘操作’ 文件1 文件2
(2)sed -e -n ‘操作’ 文件1 文件2
(3)sed -f 脚本文件 文件1 文件2
4.sed操作符:
(1)常用选项:
选项 | 操作 |
---|---|
s | 替换指定字符 |
a | 在当前行的下一行增加内容 |
i | 在选定行的上一行插入指定内容 |
c | 将选定行替换为指定内容 |
-n | 过滤sed的默认输出 |
y | 字符转换,转换前后的字符长度必须相同 |
p | 打印,通常与“-n”一起使用 |
l | 打印数据流中的文本和不可打印的字符 |
r | 扩展正则表达式 |
d | 删除选定行 |
(2)实操:
1.sed -n 'p' test.txt #打印文本内容
1.1行号范围区间打印:[root@test1 ~]# sed -n '1p' test.txt
2.奇数行和偶数行打印:[root@test1 ~]# sed -n 'n;p' test.txt #偶数行打印
2.2[root@test1 ~]# sed -n 'p;n' test.txt #奇数行打印
3.打印含指定字符的行:
[root@test1 ~]# sed -n '/k/p' test.txt #打印包含k的行
5.扩展:
(1)应用基础正则表达式进行打印:
1.[root@localhost sed]#sed -n '/^root/p' /etc/passwd #以root为开头的所有内容
2.[root@localhost sed]#sed -n '/bash$/p' /etc/passwd #以bash结尾的所有内容
3.[root@localhost sed]#sed -n '4,/bash$/p' /etc/passwd #从第四行开始,一直打印到第一个以bash为结尾的所在行
(2)使用扩展正则表达式打印:
1.用sed命令打印:
[root@test1 ~]# sed -r -n "/(\([0-9]+\)|[0-9]+)[ -]?[0-9]+[ -]?[0-9]+/p" test.txt