目录:1.sed概述 2.sed的语法 3.sed的一些常用选项和命令 4.用法举例 一.sed的概述 1.sed是什么 sed是一种流编辑器,它一次处理一行内容。处理时,把当前 处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后 ,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循 环。如果没有使诸如‘D’的特殊命令,那会在两个循环之间 清空模式空间,但不会清空保留空间。这样不断重复,直到 文件末尾。文件内容并没有改变,除非你使用重定向存储输 出。 2.sed的运行流程 sed是将文本一行一行的提取到模式空间,用脚本进行处理,一定命令下进入保持空间然后再进入模式空间再打印出来。(保持空间里的内容不能直接打印,必须要进入模式空间后才能打印出来) (图中蓝色的箭头表示文本或文件不进入保持空间的情况,红色的箭头表示进入保持空间的情况)
二.sed的语法格式 sed 选项... [脚本指令] [输入文件]
三. 常用选项和命令 常用选项(当要执行多个命令时除了可以用-e进行多点编辑还可以用分号把多个命令隔开或者\加回车换行输入。三种方式都可以实现执行多条命令) ```

]# sed  -e 's/1/2/' -e 's/3/4/' 123.txt
]# sed  's/1/2/';'s/3/4/' 123.txt
]# sed '   >s/1/2/  >s/3/4/' 123.txt (这里>表示换行)
			 常用命令![](http://i2.51cto.com/images/blog/201802/06/a5fedceac021c3a7be3515385aac6c47.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
   	 地址定界:
   	 (1) 不给地址:对全文进行处理 
   	 (2) 单地址: #: 指定的行 /pattern/:被此处模式所能够匹配到的每一行 
   	 (3) 地址范围: #,# #,+# /pat1/,/pat2/ #,/pat1/ 
   	 (4) ~:步进 1~2 奇数行 2~2 偶数行
四。实际例子 1. 处理/etc/fstab路径,使用sed命令取出其目录名
   			 ![](http://i2.51cto.com/images/blog/201802/04/ad5285f7ba51f02ac27eb7071aef5cd0.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
   				 这里用到了替换的命令把别的内容都替换成目录名 然后只显示替换后的内容从而达到题目的意思。
   				 2.删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行。                   处理前 ![](http://i2.51cto.com/images/blog/201802/04/61ada208264332d9ad94305cef35e1b1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)处理后![](http://i2.51cto.com/images/blog/201802/04/e1b3e8015ddd16007fa7647b6489b14b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
   				 这里先用-r支持正则表达式把行首的#以及后面若干个空格的行表示出来再用d删除从而达到题目要求。
   		3.在/etc/fstab文件中不以#开头的行的行首增加#号 
   		   ![](http://i2.51cto.com/images/blog/201802/04/e8a913fd1a2dc22447187e99f355fc18.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
   				 截取部分内容
   				 ![](http://i2.51cto.com/images/blog/201802/04/7533d6f8eadcb2f576868d85ca7707d3.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
   				 用-r支持正则表达式 然后把行首的^替换成#从而达到题目的要求
   		4.将文本文件的n和n+1行合并为一行,n为奇数行
   		![](http://i2.51cto.com/images/blog/201802/04/2599eadd21268f25792986b4a0b537d0.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)查看原文件
   		![](http://i2.51cto.com/images/blog/201802/04/15bc847c1d5e563d5d189d0c84e2fa00.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
   		 利用N的用法把读取的下一行追加到模式空间然后把换行符替换成 ' , ' 从而达到题目要求。