免费注册 查看新帖 |

Chinaunix

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

[文本处理] 请教如何按时间长度截取文本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-01 16:24 |只看该作者 |倒序浏览
#号之内为需处理的文本:
########################
000033 11:43:51.092 Signaling Control Channel Broadcast

System Time: 11:43:59.170

Band: 0

000034 11:43:51.092 Signaling Control Channel Broadcast

System Time: 11:43:59.170

Band: 0
Frequecy: 78

000036 11:43:51.092 FwdLinkPktHeaderInfo

System Time: 11:43:59.170
Version: 1, Number of packet headers: 1

000249 11:44:06.186 RevAMUFwdStats

System Time: 11:44:17.911
Sequence number of the log packet 71

000272 11:44:07.920 1xEV Air Link Summary

CDMA System Time: 11:44:19.626
**** Information for frame #1 of 2****
Slot        DRC Rate        SINR_For_BestASP(dB)

014588 11:47:58.295 1xEV Signaling Control Channel Broadcast

CDMA System Time: 11:48:10.038

Band: 0
Frequecy: 78

019569 11:48:34.311 1xEV-DO RevARLGains

CDMA System Time: 11:48:46.082
Version : 0
No of Frames : 8
#########################


000033 11:43:51.092           
000034 11:43:51.092
000272 11:44:07.920
这些为时间戳,格式为时:分:秒
现在是想按时间戳对文本分割后再处理,比如上述文件按1分钟进行截取输出如何实现呢?

也参考一些awk例子,但还是无头绪,请教各位达人,谢谢。


论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
2 [报告]
发表于 2013-07-01 17:00 |只看该作者
  1. awk -F'[. ]' '/[0-9]{6}/{file_name=$2} {print $0 >> file_name}' file
复制代码

论坛徽章:
0
3 [报告]
发表于 2013-07-01 21:53 |只看该作者
回复 2# seesea2517

谢谢你,结果有点不对,不好意思,可能我没表达清楚,先过滤一下文件
######################

000013 11:43:51.092 Status Snapshot Response
ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92
000014 11:43:51.092 Status Snapshot Response
ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92
014334 11:47:56.625 Status Snapshot Response
ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92
022078 11:48:52.530 Status Snapshot Response
ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92
022117 11:48:52.811 Status Snapshot Response
ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92

#######################

再说一下文件格式,如第一行,第一个字段000033是系统编号,11:43:51.092是时间戳,格式是时:分:秒,后面为内容

第二行为详细内容

第三行第一个字段000036同第一行一样,系统编号,时间戳,后面还有很多内容,只不过这里为表述清楚,将其详细内容过滤掉了

后面的一样的情况,一个编号一条记录,一个时间戳,内容有多行

现在想按时间戳进行分段,现在假设为1分钟,

上面如果分段得到的结果应该是

#1
000013 11:43:51.092 Status Snapshot Response
ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92
000014 11:43:51.092 Status Snapshot Response
ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92

#2
014334 11:47:56.625 Status Snapshot Response
ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92
022078 11:48:52.530 Status Snapshot Response
ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92
022117 11:48:52.811 Status Snapshot Response
ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92


整个处理思路就是,将文本按时间片进行分段处理,也就是将大数据化整为零进行分析

下面是个处理例子,很简洁,有所不同是我希望按时间进行分片

http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3769801

看简洁的代码,真是好看

   

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
4 [报告]
发表于 2013-07-01 22:53 |只看该作者
@fangww_uestc
现在想按时间戳进行分段,现在假设为1分钟


这个是什么意思?

看你贴的结果,我的理解是:时间相差一分中的记录放在一起。?

但是这样的话有个问题:
比如:
11:47    11:48   11:49  这三个时间各差一分钟
但11:47 和 11:49 差两份钟 按你的要求不能放在一起。
那么 11:47:和  11:48 放在一起   , 然后   11:48 和 11:49 再放在一起?

论坛徽章:
0
5 [报告]
发表于 2013-07-01 23:41 |只看该作者
回复 4# cao627

@cao627,谢谢你

嗯,还是不够清楚,就像我们将蛋糕按一定大小切片一个道理,只不过这里是按时间片来进行分割

比如几条记录

0001 11:47 ...
0002 11:48 ...
0003 11:49 ...
0004 11:50 ...

0001和0002相差一分钟,可划分为一个时间段记录输出
0003和0004相差一分钟,可划分为一个时间段记录输出

当然0002不能和0003组成一对了,因为0002已经和0001组成一个时间片


11:47    11:48   11:49  这三个时间各差一分钟
但11:47 和 11:49 差两份钟 按你的要求不能放在一起。-------------------------------是的,不能放一起,
那么 11:47:和  11:48 放在一起   , 然后   11:48 和 11:49 再放在一起?--------11:48是不能重复的


我一个想法就是,赋值var1=11:47,每行提取时间戳判断,小于1分钟,则输出,var1保持不变,例如读到了11:48,大于1分钟,打印输出且var1修改为11:48,再进行下一个循环.......
时间戳比较可进行一下格式转换即可,逻辑上觉得这样应该能行得通

   

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
6 [报告]
发表于 2013-07-02 09:43 |只看该作者
  1. [seesea@UC ~]$ awk -F'[. ]' '/^[0-9]{6}/{ti=mktime("2013 01 01 "gensub(/:/, " ", "g", $2)); if(ti-last_time>60){file_name++; last_time=ti;}} {print $0 >> "#"file_name }' file
  2. [seesea@UC ~]$ head \#*
  3. ==> #1 <==
  4. 000013 11:43:51.092 Status Snapshot Response
  5. ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92
  6. 000014 11:43:51.092 Status Snapshot Response
  7. ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92

  8. ==> #2 <==
  9. 014334 11:47:56.625 Status Snapshot Response
  10. ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92
  11. 022078 11:48:52.530 Status Snapshot Response
  12. ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92
  13. 022117 11:48:52.811 Status Snapshot Response
  14. ESN: 219321219, IMSI_S1: 15933270, IMSI_S2: 987, IMSI_S: 16575045462, IMSI_11_12: 92
复制代码

论坛徽章:
0
7 [报告]
发表于 2013-07-02 16:23 |只看该作者
回复 6# seesea2517
@seesea2517,谢谢你 ,葱白一下下



   

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
8 [报告]
发表于 2013-07-02 16:46 |只看该作者
回复 7# fangww_uestc


    葱白:小白+菜。这个名词发明的真不错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP