免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3336 | 回复: 8
打印 上一主题 下一主题

sed标签 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-08 15:02 |只看该作者 |倒序浏览
有个疑问请教下各位,2个类似的的sed语句,如下:
sed -n '/send/{:a;N;/back/{/KEYWORD/p;b};ba}' 1.log
上面这个是搜索senddata,然后建标签a并且开始搜索下面行,查到costTime后执行{}里面的语句,查找keyword,然后跳转到ba处,然后ba跳转到标签a,
这样是成功的取到send与back之间包含keyword的行。

但是下面这句,是取e与f之间的文本,却是死循环
sed -n '/e/{:a;/f/p;ba}' 1.log

请大侠帮忙看看

论坛徽章:
0
2 [报告]
发表于 2008-12-08 15:04 |只看该作者
当然是死循环了, 没有退出的条件

一直匹配/f/

这样

sed -n '/e/{:a;N;/f/{p;b};ba}' 1.log

因为你的那个没有N;无法读取下一行,也没有退出的命令

[ 本帖最后由 smallstar001 于 2008-12-8 15:07 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-12-08 15:12 |只看该作者
有N的话,找完e后就直接往下面一行开始找f,不找本行的f了(我想找本行的),而且我想只打印出每行e到f的内容。
谢谢星星之火了。我再想想

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
4 [报告]
发表于 2008-12-08 15:13 |只看该作者

回复 #3 sania9 的帖子

这个意思?

grep -o 'e.*f' urfile

论坛徽章:
0
5 [报告]
发表于 2008-12-08 15:13 |只看该作者
对了,标签是不是起始都是对行而言的,不是对内容而言的啊,如果这样我就大错特错了

论坛徽章:
0
6 [报告]
发表于 2008-12-08 15:18 |只看该作者

回复 #4 ly5066113 的帖子

又把Tim大召唤来了,怪不好意思的,我也grep -o查到过,不过这句是接在一个长长的嵌套语句里面的,想用sed。
谢谢两位了。

论坛徽章:
0
7 [报告]
发表于 2008-12-08 15:20 |只看该作者
原帖由 sania9 于 2008-12-8 15:12 发表
有N的话,找完e后就直接往下面一行开始找f,不找本行的f了(我想找本行的),而且我想只打印出每行e到f的内容。
谢谢星星之火了。我再想想


那何必用sed

论坛徽章:
0
8 [报告]
发表于 2008-12-08 15:25 |只看该作者
你的意思很奇怪 ,用循环很难

sed '/e.*f/{s/^[^e].*e/e/;s/f[^f].*$/f/}'

我能想到的就这个样子

论坛徽章:
0
9 [报告]
发表于 2008-12-08 15:34 |只看该作者
我把一个很简单的问题复杂化了。
脑袋胀了,我出去逛一圈。
谢谢星星
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP