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;/\n.*ms/s/\n/ /;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:\n19ms
假如匹配\n.*ms,就执行替换,将\n替换成空格
此时模式空间内容为
114.113.114.2: 19ms
上面替换执行成功后,满足条件执行t标签,跳到a出继续执行
直到读到218.61.204.73: 不满足匹配,也就不执行\n替换空格的命令了,执行后面的命令P;D
如此循环
sed标签的更多相关文章
- sed武功心法(info sed翻译+注解)
本文中的提到GNU扩展时,表示该功能是GNU为sed提供的(即GNU版本的sed才有该功能),一般此时都会说明:如果要写具有可移植性的脚本,应尽量避免在脚本中使用该选项. 本文中的正则表达式几乎和gr ...
- sed修炼系列(二):sed武功心法(info sed翻译+注解)
sed系列文章: sed修炼系列(一):花拳绣腿之入门篇sed修炼系列(二):武功心法(info sed翻译+注解)sed修炼系列(三):sed高级应用之实现窗口滑动技术sed修炼系列(四):sed中 ...
- Linux sed识别HTML标签
在做Linux作业,遇到一题用sed替换掉文件中的特殊字符,其中HTML标签就是一大堆特殊字符. 先来说说sed的替换使用“s/待替换的字符/将替换成的字符/”. 其后还可以跟g,即“s///g”,表 ...
- 基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od
awk awk是个很好用的东西,大量使用在linux系统分析的结果展示处理上.并且可以使用管道, input | awk '' | output 1.首先要知道形式 awk 'command' fi ...
- Sed、Awk单行脚本快速参考
文本间隔: # 在每一行后面增加一空行 sed G awk '{printf("%s\n\n",$0)}' # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本 ...
- awk sed 总结
Awk总结笔记 介绍 90年代 new awk :nawk Linux 的是gawk 我们简化awk 用法 # awk [options ] ‘scripts’ file1 file2 .... # ...
- [转]sed命令详解
转载:http://blog.chinaunix.net/u/22677/showart_1076318.html 1.简介 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保 ...
- sed实例精解--例说sed完整版
原文地址:sed实例精解--例说sed完整版 作者:xiaozhenggang 最近在学习shell,怕学了后面忘了前面的就把学习和实验的过程记录下来了.这里是关于sed的,前面有三四篇分开的,现在都 ...
- sed入门详解教程
sed是一个比较古老的,功能十分强大的用于文本处理的流编辑器,加上正则表达式的支持,可以进行大量的复杂的文本编辑操作.sed本身是一个非常复杂的工具,有专门的书籍讲解sed的具体用法,但是个人觉得没有 ...
随机推荐
- Jenkins+Gitlab CE+Robot Framework持续集成
环境 Ubuntu 14.04.3 LTS Desktop 前提 1.在本地能执行测试脚本(pybot yourTestSuit.txt),本文不讲解如何学习使用RF框架 2.已有Gitlab环境,本 ...
- 【Core2.0帮助类】
缓存帮助类(CacheHelper) /// <summary> /// 缓存帮助类 /// </summary> public class CacheHelper {//下载 ...
- HTML基础知识(表格、表单)
6.表格 l 概念:表格一定具有行和列 注:使用<thead><tbody><tfoot>,使浏览器能独立于表格表头和表格页脚的表格主体滚动.当包含多个页面的表格 ...
- Django----->Ajax
一,前情回顾(Json) Json的定义: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w3c制定的 ...
- flask-sqlalchemy使用命令创建数据库
# 启动文件from flask_script import Manager,Server from flask_migrate import MigrateCommand,Migrate from ...
- JaveScript数组(JS知识点归纳五)
1.概念 a)作用--用于保存多个数据,便于对数据的使用 b)数组元素--数组中的数据 c)索引--数组中的元素按照下标(数值)的方式排列(从0 开始),依次递增(也有可能是字符串的类型--不用) d ...
- HDU2504-又见GCD-递归
又见GCD Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 2017 ECJTU ACM 程序设计竞赛
大厦 Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submission ...
- Hat's Fibonacci(大数加法+直接暴力)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1250 hdu1250: Hat's Fibonacci Time Limit: 2000/1000 M ...
- c语言基础学习05
=============================================================================涉及到的知识点有:for循环有两种写法.数组. ...