1. Sed 简介
sed 是一种新型的,非交互式的编辑器。它能执行与编辑器 vi 和 ex 相同的编辑任务。sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。sed 编辑器没有破坏性,它不会修改文件,除非使用 shell 重定向来保存输出结果。默认情况下,所有的输出行都被打印到屏幕上。
1.1 sed 工作过程
sed 编辑器逐行处理文件(或输入),并将输出结果发送到屏幕。sed 的命令就是在 vi和 ed/ex 编辑器中见到的那些。sed 把当前正在处理的行保存在一个临时缓存区中,这个缓存区称为模式空间或临时缓冲。sed 处理完模式空间中的行后(即在该行上执行 sed 命令后),就把改行发送到屏幕上(除非之前有命令删除这一行或取消打印操作)。sed 每处理完输入文件的最后一行后,sed 便结束运行。sed 把每一行都存在临时缓存区中,对这个副本进行编辑,所以不会修改或破坏源文件。
如图 1:sed 处理过程。
从上图可以看出 sed 不是破坏性的,它不会修改正在编辑的文件。
1.2 Sed 命令格式
sed 命令行格式为: sed [选项] ‘command’ 输入文本
Sed 定位
Sed 命令在没有给定的位置时,默认会处理所有行;
Sed 支持一下几种地址类型:
1、first~step
这两个单词的意思:first 指起始匹配行,step 指步长,例如:sed -n 2~5p 含义:从第二
行开始匹配,隔 5 行匹配一次,即 2,7,12.......。2、$
这个$符表示匹配最后一行。3、/REGEXP/
这表示匹配正则那一行,通过//之间的正则来匹配。4、\cREGEXPc
这个是表示匹配正则那一行,通过\c 和 c 之间的正则来匹配,c 可以是任一字符5、addr1,add2
定址 addr1,add2 决定用于对哪些行进行编辑。地址的形式可以是数字、正则表达式或
二者的结合。如果没有指定地址,sed 将处理输入文件中的所有行。
如果定址是一个数字,则这个数字代表行号,如果是逗号分隔的两个行号,那么需要处
理的定址就是两行之间的范围(包括两行在内)。范围可以是数字,正则或二者组合。6、addr1,+N
从 addr1 这行到往下 N 行匹配,总共匹配 N+1 行