首页 > 代码库 > Sed
Sed
sed
sed是一种新型的,非交互式的编辑器,他能执行与编辑器vi和ex相同的编辑任务。sed编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。可以使用shell重定向来保存输出结果,默认情况下,所有输出行都被打印到屏幕上。
1.命令格式
sed [ option ] ‘command‘ 输入文本
说明:
sed命令在没有给定的位置时,默认会处理所有行。
sed支持以下几种地址类型:
1.first~setep
first指起始匹配行,step指步长,例如sed -n 2~5p,从第二行匹配,隔5行匹配一次,即2,7,12,17...
2.$
$表示匹配最后一行。
3./REGEXP/
表示匹配正则那一行,通过//之间的正则来匹配。
4.\cREGEXPc
表示匹配正则那一行,通过\c和c之间的正则来匹配,c可以是任意一字符。
5.addr1,add2
地址addr1,add2决定用于对哪些行进行编辑,地址的形式可以是数字、正则表达式或二者的结合,如果没有指定地址,sed将处理输入文件中的所有行。
6.addr,+N
从addr这行到往下N行匹配,总共匹配N+1行
sed的正则表达式:
sed的正则表达式元字符:
元字符 功能 示例 示例的匹配对象。
^ 行首定位符 /^love/ 匹配所有以love开头的行。
$ 行尾定位符 /love$/ 匹配所有以love结尾的行。
. 匹配除换行外的串个字符 /l..e/ 匹配包含字符l、后跟两个任意字符、再跟字母e的行。
* 匹配零个或多个前导字符 /*love/ 匹配在零个或多个空格紧跟着模式love的行。
[] 匹配指定字符组内任意一字符 /{L}ove/ 匹配包含love和Love的行。
[^] 匹配不指定字符组内任意一字符 /[^A-KM-Z]ove/ 匹配包含ove,但ove之前的那个字符不在A至K或M至Z间的行。
& 保存查找串以便在替换串中引用 s/love/**&**/ 符号&代表查找串。字符串love将替换前后各加了两个**的引用,即love变成**love**。
x\{m\} 连续m个x /o\{5\}/ 匹配连续5个字母o。
2.命令参数:
-n 使用安静模式,在一般情况所有的STDIN都会输出到屏幕上,加上-n后只打印被sed特殊处理的行
-e 多重编辑,且命令顺序会影响结果。
-f 指定一个sed脚本文件到命令行执行
-r sed使用扩展正则
-i 直接修改文档读取的内容,不在屏幕上输出
3.sed 操作命令
sed操作命令告诉sed如何处理由地址指定的各输入行
Sed