首页 > 代码库 > 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