zoukankan      html  css  js  c++  java
  • 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必须是文件的前两个字符。

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

  • 相关阅读:
    链表的头指针
    顺时针打印矩阵
    旋转数组的最小数字
    实现string类
    最长对称子串
    DFS和BFS
    最长公共子序列
    排序算法
    大端与小端
    交换两个数
  • 原文地址:https://www.cnblogs.com/kelamoyujuzhen/p/10079540.html
Copyright © 2011-2022 走看看