文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>sed

sed

时间:2008-03-24  来源:jaffaz

sed是流编辑器,用于编辑标准输入或文件,将结果输出到标准输出中。
sed中有几个比较重要的概念:地址、数据缓冲区、命令

地址:用于定位哪些行需要执行某个命令。地址可以是行号,正规表达式等形式
    NUMBER              指定行号为NUMBER的行
    FIRST~STEP          从FIRST起每隔STEP行(FIRST+ N*STEP)
    $                   末行
    /REGEXP/            与REGEXP正规表达式匹配的行,REGEXP含有'/'的话用'\/'代替
    \%REGEXP%           与/REGEXP/类似,但'%'可以换成任何字符,避免使用'\'转义字符
    /REGEXP/I
    \%REGEXP%I          大小写不敏感

    ADDR1, ADDR2        从ADDR1起,到ADDR2止的所有行
    ADDR, +N            从ADDR起,及其接下来N行
    ADDR, ~N            从ADDR起,到N行止
    ADDR!               不匹配ADDR的行

数据缓冲区:sed维护两个数据缓冲区,pattern和hold。sed从文件里面读出数据,存到pattern缓冲区里
    面。大多数命令都是对pattern的数据进行操作。hold是一个用于存储中间数据的缓冲区,sed提供将
    pattern里面的数据存放到hold里面、从hold里面取出数据放到pattern中以及交换两个缓冲区数据的
    操作命令。

命令:
    #                   注释,不能用地址修饰
    q [exit-code]       退出sed
    d                   删除pattern的内容
    p                   将pattern的内容输出到标准输出
    {}                  {}括起一组命令,可以使用同一个地址

    s/REGEXP/REPLACEMENT/FLAGS
                        substitution,串替换命令。将匹配REGEXP的串替换为REPLACEMENT。

          REPLACEMENT中的功能串:
             \L         后面的字符都转换为小写,直到遇到'\U'或'\E'
             \l         接下来的第一个字符转换为小写
             \U         后面的字符都转换为大写,直到遇到'\L'或'\E'
             \u         接下来的第一个字符转换为大写
             \E         前面\L或\U的转换终止
          FLAGS标志:
             g          sed的s命令默认只是替换第一个匹配的串。加g标志后,替换所有匹配的串
             NUMBER     指定替换第几个匹配的串
             p          假如pattern中有匹配的串被替换,将替换后的pattern输出
             w file-name   类似p,但替换后的pattern输出到file-name中。file-name只能是
                        /dev/stdout或/dev/stderr
             I
             i          REGEXP匹配的时候忽略大小写

    y/src-chars/dst-chars/
                        将pattern中的所有src-chars字符一一转换成dst-chars中对应位置的字符
    'a text'
    'a\
        text'           在pattern中追加一行'text'的内容

    'i text'
    'i\
        text'           在pattern中插入一行'text'的内容

    'c text'
    'c\
        text'           将pattern的内容替换为text

    =                   输出当前行号,带换行符
    l N                 输出pattern的所有内容,不可打印字符用转义字符形式输出
                        N指定了输出多少个字符后换行
    r file-name         执行周期结束时读取file-name文件的内容,插入到输出流中
    w file-name         将pattern的数据写入file-name文件中
                        file-name只能是/dev/stdout或/dev/stderr
    D                   只删除pattern里面的第一行,若删除后pattern不为空,对该pattern重新
                        启动一次执行周期
    N                   往pattern追加换行
    h                   复制pattern的数据到hold中
    H                   往hold追加换行,然后再追加pattern的数据
    g                   复制hold的数据到pattern中
    G                   往pattern追加换行,然后再追加hold的数据
    x                   交换pattern和hold的数据
   


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载