一、简介
sed(Stream EDitor)是一种行编辑器,Linux中有三种常见的行编辑器:gred,sed,awk,其中awk命令最复杂,grep命令最简单,sed命令难度适中。
sed命令能够接收一个文件或者管道输入流,以一次处理一行的方式处理完成整个文档,能够接收管道输入流是sed命令的一个特色功能。
sed命令的详细使用方法在线手册:http://www.gnu.org/software/sed/manual/sed.html
sed最全命令格式展开
sed OPTIONS... [SCRIPT] [INPUTFILE...]
其中[SCRIPT]部分是由两部分组成:Address Command ,其实就是
sed OPTIONS... [Address[Command]] [INPUTFILE...]
二、Options
1. -n 启用静默模式。默认sed命令会打印出模式空间中的内容,使用该选项将不再打印。
2. -r 启用扩展的正则表达式
3. -f script-file 使用脚本文件添加额外的处理文本功能
4. -e script 使用脚本添加额外的处理文本功能
三、Address
Address的作用就是“选择行(Selecting Lines)”,也就是选定作用范围。
1.n
选择指定的某行
2.startline,endline
指定开始行和结束行,比如3,5,指定第三行到第五行的所有行。
3.startline~step
指定开始行以及步长,2~3表示选定从第2行开始每3行直到文件尾部的所有行。
4./RegExp/
指定所有符合正则表达式的行,如果表达式中有/,必须使用\将其转义:\/
5.$
选定文件最后一行
6.startline,+n
从startline开始,向后的n行
7.startline,~n
从startline开始,向前和向后的n行
四、Command
紧接着Address的是Command,是对选中文本的操作
1.d 删除符合条件的行
2.p 显示符合条件的行,该命令一般和-n选项使用
3.a \string 在在指定的行后面添加新行,内容为string,可以使用\n换行
4.i \string 在指定的行前面添加新行,内容为string,可以使用\n换行
5.s/regexp/replacement/flags 将匹配到的串替换成为指定的字符串,分隔符/可以自定义,如果表达式中用到了/需要使用\进行转义。
flag可以包含
g :全局替换。默认只替换每行的第一个匹配项
i : 忽略字母大小写
五、练习
1.删掉/etc/profile文件中行首的所有空白字符
sed -r 's/^[[:space:]]+//g' /etc/profile
分析:删除一行中的一部分字符使用替换功能,所以使用s命令,-r指定使用扩展的正则表达式。
2.删除/etc/profile文件中的空白行
sed -r '/^$/d' /etc/profile
删除行使用命令d,Address使用正则表达式^$匹配,但是需要加上//
3.删除/etc/profile文件中以#开头并且后面带有至少一个空格的字符
sed -r 's/^#[[:space:]]+//g' /etc/profile
本文出自 “狂盗一枝梅的博客” 博客,请务必保留此出处http://kdyzm.blog.51cto.com/8316029/1740917