一、sed流编辑器介绍
1,概述
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等
2,工作流程
读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)。
执行:默认情况下,所有的sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed 命令 将会在所有的行上依次执行。
显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。
备注:在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。
3,工作场景
①. 编辑那些对舒适的交互式编辑而言太大的文件。
②. 在编辑命令太复杂而难于在交互模式下键入的时候编辑任何大小的文件。
③. 要在对输入的一趟扫描中有效的进行多个‘全局’(global)编辑函数。
4,常用选项
sed命令常用选项
选项 | 说明 |
-e 或--expression= | 表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略,一般在执行多个操作命令使用 |
-f 或--file= | 表示用指定的脚本文件来处理输入的文本文件 |
-h 或--help | 显示帮助 |
-n、--quiet或--silent | 禁止sed编辑器输出,但可以与p命令一起使用完成输出 |
-i | 直接修改目标文本文件 |
sed命令操作符
选项 | 说明 |
s | 替换,替换指定字符 |
d | 删除,删除选定的行 |
a | 增加,在当前行下方增加一行指定内容 |
i | 插入,在选定行上方插入一行指定内容 |
c | 替换,将选定行替换为指定内容 |
y | 字符转换,转换前后的字符长度必须相同 |
p | 打印行内容。如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以ASCII码输出。其通常与"-n"选项一起使用 |
= | 打印行号 |
l (小写L | 打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t) |
二、sed编辑器基本用法
1,默认打印
格式:
sed -n "行号p" 文件名
2,打印行号
格式:sed -n '=' english
sed -n '=;p' english
1)按照行号打印
2)行号范围区间的打印
3)对奇数行和偶数行的打印
4)过滤打印
5)正则表达式打印
3,sed删除操作
格式:
删除行sed '行号d' 文件名
删除字符串sed ‘s/要删除的字符//g’文件名
1)通过行号删除![](https://img-blog.csdnimg.cn/6c1765c06a7f4b638da7753c7912c20d.png)
2)匹配字符串内容删除
删除空行的三种方法:
- grep -v "^$" file.txt //过滤出非空行
- cat file.txt |tr -s "\n" //压缩换行符
- sed '/^$/d' file.txt //删除空行
4,sed命令替换
1)匹配单字符进行替换 ![](https://img-blog.csdnimg.cn/e851600076e445bc819aa05ea33a8f55.png)
2)字母字符进行大小的替换
3)整行替换
5,sed命令的增加操作
a:在行后添加内容
i:在行前插入内容
r:在行后读入文件内容
6,sed命令字符位置交换