• 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
    
    如此循环
    
  • 相关阅读:
    Python入门11 —— 基本数据类型的操作
    Win10安装7 —— 系统的优化
    Win10安装6 —— 系统的激活
    Win10安装5 —— 系统安装步骤
    Win10安装4 —— 通过BIOS进入PE
    Win10安装2 —— 版本的选择与下载
    Win10安装1 —— 引言与目录
    Win10安装3 —— U盘启动工具安装
    虚拟机 —— VMware Workstation15安装教程
    Python入门10 —— for循环
  • 原文地址:https://www.cnblogs.com/irockcode/p/8018825.html
Copyright © 2020-2023  润新知