sed:   man sed查看帮助

语法:

   sed [选项] '/定址/命令' 文件名

一、定址:就是告诉sed处理哪些行

    1)没有定址,表示处理整个文件

    2)有一个定址,处理匹配定址的行   2d  /hello/

    3)有两个定址,处理的是两个定址之间的内容  2,5d   /hello/,/nohello/

二、选项

    -n:关闭模式空间输出,不会输出不匹配的行

    -f:后面需要指定sed脚本

    -e:允许多项编辑,其实就是对同一行做多个操作  -e 2d -e 2g

    -i:直接修改原文件  

    -r:支持扩展正则  + | ? {} ()

pattern:模式

三、常用命令

    p 打印  print

    d   删除  delete

    s   替换  substitute

    w   写入文件,另存为  write

    r   读入文件          read

    a   追加 append

    i   插入 insert

    c   修改,本行替换   change

四、操作

# head -5 /etc/passwd | cat -n > sed.pass

# cat sed.pass 

     1 root:x:0:0:root:/root:/bin/bash

     2 bin:x:1:1:bin:/bin:/sbin/nologin

     3 daemon:x:2:2:daemon:/sbin:/sbin/nologin

     4 adm:x:3:4:adm:/var/adm:/sbin/nologin

     5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

1、s——替换   

 语法:sed  '/定址/s/模式匹配(旧内容)/替换内容(新内容)/flag' file

  模式匹配:可以使用正则表达式

  flag: n为数字,第n次匹配到的内容

         g   全局替换

   

  1)默认只替换每行第一次匹配到的那个      

     # sed 's/root/ROOT/' sed.pass

  2)指定替换哪个

     # sed 's/root/ROOT/3' sed.pass

  3)全局替换

     # sed 's/root/ROOT/g' sed.pass

  4)含有两个定址的替换

     # sed '/root/,/adm/s/bin/binary/g' sed.pass

     # sed '2,4s/\<bin/b/g' sed.pass