• sed进阶教程


    寻址规则

    常规寻址

    • 如果没有指定地址,那么命令将应用于每一行。
    • 如果只有一个地址,那么命令应用于与这个地址匹配的任意行。
    • 如果指定了由逗号分隔的两个地址,那么命令应用于匹配第一个地址(不包括第一个地址)到匹配第二个地址的行(包括此行)。
    • 如果地址后面跟有感叹号(!),那么命令就应用于不匹配该地址的所有的行。

    举例

    ed中使用寻址扩大受命令影响的行数;sed使用寻址限制受命令影响的行数。

    测试文本:list

    John Daggett, 341 King Road, Plymouth MA
    Alice Ford, 22 East Broadway, Richmond VA
    Orville Thomas, 11345 Oak Bridge Road, Tulsa OK
    Terry Kalkas, 402 Lans Road, Beaver Falls PA
    Eric Adams, 20 Post Road, Sudbury MA
    Hubert Sims, 328A Brook Road, Roanoke VA
    Amy Wilde, 334 Bayshore Pkwy, Mountain View CA
    Sal Carpenter, 73 6th Street, Boston MA
    View Code

    删除所有行

    d

    删除首行

    1d

    删除尾行

    $d

    删除空行

    /^$/d

    删除了从第一行直到第一个空行的所有的行,可用它来删除保存在文件中的Internet邮件消息中的邮件头。

    1,/^$/d

    嵌套寻址

    sed使用大括号{}将一个地址嵌套在另一个地址中,或者在相同的地址上应用多个命令。

    举例

    /ˆ.TS/,/ˆ.TE/{
        /ˆ$/d
        s/ˆ.ps 10/.ps 8/
        s/ˆ.vs 12/.vs 10/
    }
    View Code

    书写要求

    左大括号必须在行末

    右大括号本身必须单独占一行

    确保在大括号之后没有空格。

    注释

    在sed的System V版本中,注释只允许出现在第一行。而有的版本,则可以在脚本的任何地方放置注释,甚至是跟在命令行的后面。

    注释以#开头

    如果是#n,那么脚本不会自动产生输出。这和指定命令行选项-n是等价的。跟在n后面的其余的内容被看做是注释。在POSIX标准中,采用这种方式的#n必须是文件的前两个字符。

    如果注释内容太多,一行输入不完,则使用反斜杠 来续行,但是“新行”必须以#开头

  • 相关阅读:
    基于python批量获取Url
    记一次tp5.0.11rce
    centOS 6.2 x64系统上安装 oracle 11g R2 x64
    用xmanager连接Linux的配置步骤
    0级备份和全备
    配置EM遇到的问题
    转:如何迁移oracle 队列表
    oracle audit
    VIEWS for Oracle object privileges
    Oracle 脚本
  • 原文地址:https://www.cnblogs.com/kelamoyujuzhen/p/10079540.html
Copyright © 2020-2023  润新知