zoukankan      html  css  js  c++  java
  • sed标签

    转载

    b label ,无条件跳转到标签label,如果label没有指定,跳转到命令的结尾
    t label ,如果最后一次输入的最后一个 s/// 子命令执行成功,跳转到标签label,如果label没有指定,跳转到命令的结尾
    
    cat file
    AA
    BC
    AA
    CB
    CC
    AA
    sed ‘/^AA/s/$/ YES/t;s/$/ NO/‘ file
    AA YES
    BC NO
    AA YES
    CB NO
    CC NO
    AA YES
    
    
    t是有条件跳转,在匹配AA之后执行成功了替换为YES,到t标签处发现没有设置标签,就跳到结尾处,不执行NO替换了;当不匹配AA也就不执行后面的替换YES,也不执行标签,只执行NO替换
    
    (t标签触发的条件是,必须t标签前的s///命令执行成功,否则忽略t标签)
    
    sed ‘/^AA/ba;s/$/ NO/;b;:a;s/$/ YES/‘ file 
    AA YES
    BC NO
    AA YES
    CB NO
    CC NO
    AA YES
    
    
    b是无条件跳转,当匹配AA之后触发b标签,跳转到:a处,然后执行标签后面的替换YES;当不匹配AA时不触发第一个b标签,执行替换NO语句,然后遇到第二个b标签,但没有设置标签,跳转到结尾处,跳过YES替换
    
    (b标签触发条件是,无条件遇到就跳转)
    
    
    
    cat file
    
    114.113.144.2:
    19ms
    19ms
    19ms
    36ms
    22ms
    19ms
    18ms
    218.61.204.73:
    0ms
    0ms
    0ms
    0ms
    0ms
    0ms
    0ms
    221.194.139.147:
    165ms
    157ms
    159ms
    169ms
    164ms
    163ms
    64ms
    221.194.46.244:
    32ms
    31ms
    58ms
    141ms
    119ms
    31ms
    31ms
    123.129.243.246:
    36ms
    36ms
    36ms
    42ms
    36ms
    36ms
    36ms
    123.234.6.2:
    40ms
    40ms
    40ms
    40ms
    40ms
    40ms
    40ms
    125.211.197.172:
    41ms
    41ms
    41ms
    41ms
    41ms
    41ms
    41ms
    218.60.8.171:
    6ms
    6ms
    6ms
    6ms
    6ms
    6ms
    6ms
    sed ‘/:$/{:a;N;/
    .*ms/s/
    / /;ta;P;D}‘ file 
    114.113.144.2: 19ms 19ms 19ms 36ms 22ms 19ms 18ms
    218.61.204.73: 0ms 0ms 0ms 0ms 0ms 0ms 0ms
    221.194.139.147: 165ms 157ms 159ms 169ms 164ms 163ms 64ms
    221.194.46.244: 32ms 31ms 58ms 141ms 119ms 31ms 31ms
    123.129.243.246: 36ms 36ms 36ms 42ms 36ms 36ms 36ms
    123.234.6.2: 40ms 40ms 40ms 40ms 40ms 40ms 40ms
    125.211.197.172: 41ms 41ms 41ms 41ms 41ms 41ms 41ms
    218.60.8.171: 6ms 6ms 6ms 6ms 6ms 6ms 6ms
    思路使用t标签,有条件跳转
    
    匹配以:结尾的行,然后执行N命令读入下一行
    
    此时模式空间内容为
    
    114.113.114.2:
    19ms
    
    假如匹配
    .*ms,就执行替换,将
    替换成空格
    
    此时模式空间内容为
    
    114.113.114.2: 19ms
    
    上面替换执行成功后,满足条件执行t标签,跳到a出继续执行
    
    直到读到218.61.204.73: 不满足匹配,也就不执行
    替换空格的命令了,执行后面的命令P;D
    
    如此循环
    
  • 相关阅读:
    Spring MVC学习03页面跳转
    Spring Boot学习07配置加载顺序
    Spring MVC学习01从空白Maven项目搭建环境
    Spring MVC学习05JSON序列化
    剑指Offer 44 数字序列中某一位的数字
    Spring MVC学习06异常解析器
    MSSQL·查看DB中所有表及列的相关信息
    MSSQL·查询数据库中所有索引的相关信息
    MSSQL·最长输出长度限制之解决方案
    .Net Core·热加载的实现及测试
  • 原文地址:https://www.cnblogs.com/irockcode/p/8018825.html
Copyright © 2011-2022 走看看