免费注册 查看新帖 |

Chinaunix

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

输出匹配行后面的几行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-07 17:15 |只看该作者 |倒序浏览
本帖最后由 kitiz 于 2011-07-07 17:20 编辑

有一个文件内容:
log/TCP_128/RECEIVE
07071422

629.8336
985.7358
1176.7049
1161.5998
874.2844
1852.2079
2153.1002
2125.9526
log/TCP_128/SEND
07071422

742.2564
978.6179
1044.1491
1070.1761
1427.1565
1969.4728
2076.2248
2012.9897
log/TCP_2048/RECEIVE
07071422

938.2984
985.3628
1199.5154
1133.3772
1882.6661
1906.0648
2130.3019
2461.2140
log/TCP_2048/SEND
07071422

942.7927
980.1376
1062.7501
1054.5864
1885.1118
2447.5760
2388.5727
2210.1754

想输出比如匹配SEND后面隔两行的8行数据,求各位指教
log/TCP_2048/SEND
07071422

942.7927
980.1376
1062.7501
1054.5864
1885.1118
2447.5760
2388.5727
2210.1754





awk '{a[NR%10]=$0}/TCP.*SEND/{for(i=NR+2;i<NR+10;i++) print a[i%10]}' log.txt
这样输出的是匹配SEND前面的8行,不知道是什么原因
小白。。

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
2 [报告]
发表于 2011-07-07 17:28 |只看该作者
你这样写就是错的
数组a中存储的就是匹配到send那一行的前10行,
匹配到send后就来打印数组a中的8行,当然是send之前的8行

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
3 [报告]
发表于 2011-07-07 18:31 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2011-07-07 20:40 |只看该作者
sed -n "/TCP.*SEND/,+10p" log.txt |sed -n "/^$/,+8p"

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
5 [报告]
发表于 2011-07-07 22:15 |只看该作者
回复 1# kitiz

try:

awk:
  1. $ awk '/SEND/{n=8;i=0}/SEND/,n--==0{if(i++>2)print}' urfile
复制代码
sed:
  1. $ sed '/SEND/,+8! d;/SEND/,+2d' urfile
复制代码

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
6 [报告]
发表于 2011-07-08 00:05 |只看该作者
sed -n '/SEND/,+10{/SEND/,+2d;p}'

论坛徽章:
0
7 [报告]
发表于 2011-07-08 08:42 |只看该作者
楼上各位高手, 关于sed 中 +8!  +10p  +2d
这些用法论坛里有相关的资料吗? 我想学习一下,麻烦给个链接给我
谢谢!

论坛徽章:
0
8 [报告]
发表于 2011-07-08 09:03 |只看该作者
我试过了,5楼提示
HP-UX:/hwtest/shell>sed -n "/TCP.*SEND/,+10p" log.txt | sed -n "/^$/,+8p" c.txt
sed: Function /TCP.*SEND/,+10p cannot be parsed.
sed: Function /^$/,+8p cannot be parsed.

六楼
1、
HP-UX:/hwtest/shell>awk '/SEND/{n=8;i=0}/SEND/,n--==0{if(i++>2)print}' c.txt
742.2564
978.6179
1044.1491
1070.1761
1427.1565
1969.4728
942.7927
980.1376
1062.7501
1054.5864
1885.1118
2447.5760

2、
HP-UX:/hwtest/shell>sed '/SEND/,+8!d;/SEND/,+2d' c.txt
sed: Function /SEND/,+8!d;/SEND/,+2d cannot be parsed.

7楼提示
HP-UX:/hwtest/shell>sed -n '/SEND/,+10{/SEND/,+2d;p}' c.txt
sed: Function /SEND/,+10{/SEND/,+2d;p} cannot be parsed.


好像都得不到楼主想要的结果呢?

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
9 [报告]
发表于 2011-07-08 09:14 |只看该作者
回复 9# huang_wunix


    HP-UX 不支持GNU 扩展??
  1.        GNU sed also supports some special 2-address forms:

  2.        0,addr2
  3.               Start  out  in  "matched first address" state, until addr2 is found.  This is similar to 1,addr2,
  4.               except that if addr2 matches the very first line of input the 0,addr2 form will be at the end  of
  5.               its range, whereas the 1,addr2 form will still be at the beginning of its range.

  6.        addr1,+N
  7.               Will match addr1 and the N lines following addr1.

  8.        addr1,~N
  9.               Will  match  addr1 and the lines following addr1 until the next line whose input line number is a
  10.               multiple of N.
复制代码

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
10 [报告]
发表于 2011-07-08 09:25 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP