sed解析

来源:互联网 发布:如怎么成为淘宝达人 编辑:程序博客网 时间:2024/06/10 17:29

sed命令格式 一个可选的的地址或者地址范围,后面跟着一个或一些命令字。

1.0 常用选项

   -n quietly silcent

   -e one or more action

   -r regrexp-externed

1.1 地址

    number
    $
    /regrexp/    "/"是分割匹配的分割符,可以用其他的分割符,向下面的\%
    \%regrexp%    指定其他的分割符,%指其他任意的分割符

    地址范围用两个地址,中间用逗号隔开

1.2 sed有两个buffer
  
    patter space : 平时从文件或者输入读取的数据就放在patter space里
    还有一个可选用的hold space

1.3 常用的命令字
 
    1.3.1 s/regexp/replacement/flags
     1.3.1.1 replacement 可以使用\1 \2 \3等形式,表示regexp的匹配顺序
                          还可以使用\&
     1.3.1.2 flag 可以包含这些东西:
             g
             p
             number 只有numberTH个匹配项需要代替
             w file-name 将替换的写入file-name中
 
    1.3.2 q
    1.3.3 d  
            删除当前模式空间内容(不在传至标准输出),并放弃之后的命令,并对新读取的内容,重头执行sed
    1.3.4 p
    1.3.5 n
    1.3.6 {commands}
            一组命令

1.4 不常用的命令
    1.4.1 D
           D命令是删除当前模式空间开端至\n的内容(不在传至标准输出),放弃之后的命令,但是对剩余模式空间重新

执行sed

    1.4.2 P
           P打印当前模式空间开端至\n的内容

    1.4.3 N
          N命令简单来说就是追加下一行到模式空间,同时将两行看做一行,但是两行之间依然含有\n换行符,如果命令未

执行成功(并非跳过:前端条件不匹配),则放弃之后任何命令,并对新读取的内容,重头执行sed

    1.4.4 y/source_chars/dest_chars/
          y命令的作用在于字符转换

    1.4.5 h命令,H命令,g命令,G命令
          h命令是将当前模式空间中内容覆盖至保持空间,H命令是将当前模式空间中的内容追加至保持空间
 
          g命令是将当前保持空间中内容覆盖至模式空间,G命令是将当前保持空间中的内容追加至模式空间

    1.4.6 x命令
          x命令是将当前保持空间和模式空间内容互换

    1.4.7 i\ a\ c\
          a\ 新增a\紧跟的data到匹配的行后面, 如果紧跟多行,除最后一行外,其他行用\结尾
             只能指定一行

          i\ 插入i\紧跟的data到匹配的行前面, 如果紧跟多行,除最后一行外,其他行用\结尾
             只能指定一行
      
          c\ 将匹配的行替换成c\后面紧跟的data,如果紧跟多长,除最后一行外,其他行用\结尾
             可以指定某个范围内的行

    1.4.8 r filename
         
          在匹配到某行后,插入filename文件的内容到该行后

    1.4.9 w filename

          将匹配到的行 写到filename文件中,filename的内容被覆盖

   1.4.10 流程控制命令 lable b(branch)t(test)
          :lable;
          b lable;  无条件跳到label处理
          t lable; test是true才跳到lable处理

         

    

0 0