免费注册 查看新帖 |

Chinaunix

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

[文本处理] 按段抓取匹配到的内容 [复制链接]

论坛徽章:
1
狮子座
日期:2015-01-07 16:40:55
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2018-04-27 15:19 |只看该作者 |倒序浏览
请教坛子shell爱好者~ 有如下文本一处理:文本特点:每段开头是point,结尾是end,段中有midcut关键字和REG关键字。然后每段依次如此循环,有很多段。
文本处理要求:
1. 对应REG行之前的文本,delta值大于0.005时,打印出该行的正上一行(即有net关键字的一行),并打印出这个delta值;
2. 对于REG行至midcut行之间不处理;
3. 对于midcut行之后的文本,delta值大于0.005时,打印出该行的正上一行(即有net关键字的一行),并打印出这个delta值。
打印效果如文本二所示(文本一后面),或者如文本一蓝颜色字体所示为打印内容

文本一:

point      fanout   cap       tran      delta
---------------------------------------------
clk_net     1        0.0036
ccsINV/A                      0.12      0.003
ccsINV/Y                      0.15
cll_net     2        0.0031
dcsBUF/A                      0.18      0.003
dcsBUF/Y                      0.12
clk_net     1        0.0036
ccsINV/A                      0.12      0.008
ccsINV/Y                      0.16
fe_net      4        0.0023
REG/CK                        0.23      0.002
clsnet       2        0.002
feINV/A                        0.12      0.008
feINV/Y                        0.14
midcut

net_11     1        0.0036
cisINV/A                       0.12      0.003
ccsINV/Y                       0.15
clc_net     2        0.0031
feeBUF/A                      0.18      0.007
feeBUF/Y                      0.22
end

point      fanout   cap       tran      delta
---------------------------------------------
...





文本二:
clk_net    0.008
clc_net    0.007

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
2 [报告]
发表于 2018-04-28 15:41 |只看该作者
回复 1# 南武水寿


  1. awk '$1~/net/{a=$1}$1~/REG/{f=1}!f&&$1~/\/A$/{if($NF>0.005){print a,$NF}}$1~/midcut/{f=0}' 1
  2. clk_net 0.008
  3. clc_net 0.007
复制代码

论坛徽章:
1
狮子座
日期:2015-01-07 16:40:55
3 [报告]
发表于 2018-05-01 17:12 |只看该作者
回复 2# wh7211

感谢,非常赞,完美解决!1. 就是少了一个段落循环(point到end之间是一个段落)

2. 为什么我的环境对于 !f 中的!非事件老是提示f: Event not found,只能把它改成f==0来判断

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
4 [报告]
发表于 2018-05-02 16:37 |只看该作者
回复 3# 南武水寿


awk逐行处理数据,支持多个段落
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP