免费注册 查看新帖 |

Chinaunix

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

[文本处理] 请问怎么统计出每个小时段的最大响应时间和最小响应时间 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-08-25 22:17 |只看该作者 |倒序浏览
文本如下
[root@centos ~]# cat 1
时间                                        ip                响应时间
[2016-08-23  19:20:30]   192.168.1.8  0.11
[2016-08-23  19:20:35]   192.168.1.8  0.12
[2016-08-23  19:22:39]   192.168.1.8  0.15
[2016-08-23  19:30:30]   192.168.1.8  0.21
[2016-08-23  20:20:40]   192.168.1.8  0.11
[2016-08-23  20:22:50]   192.168.1.8  0.12
[2016-08-23  20:24:30]   192.168.1.8  0.22
[2016-08-23  20:44:30]   192.168.1.8  0.12

需求:请问怎么统计出每个小时段的最大响应时间和最小响应时间

所要的结果如下:

[2016-08-23  19:20:30]   192.168.1.8  0.11
[2016-08-23  19:30:30]   192.168.1.8  0.21
[2016-08-23  20:20:40]   192.168.1.8  0.11
[2016-08-23  20:24:30]   192.168.1.8  0.22

论坛徽章:
0
2 [报告]
发表于 2016-08-25 22:20 |只看该作者
写的越简单,越精华最好,请用awk来展现,谢谢

论坛徽章:
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
3 [报告]
发表于 2016-08-25 23:13 |只看该作者
本帖最后由 wh7211 于 2016-08-26 13:55 编辑
  1. awk -F"[[ :]+" 'function s(){min[$2"_"$3]=max[$2"_"$3]=$NF;min1[$2"_"$3]=max1[$2"_"$3]=$0};function t(){if($NF<min[$2"_"$3]){min[$2"_"$3]=$NF;min1[$2"_"$3]=$0}else if($NF>max[$2"_"$3]){max[$2"_"$3]=$NF;max1[$2"_"$3]=$0}};NR>1&&min[$2"_"$3]{t()}NR>1&&!min[$2"_"$3]{s();t()}END{for(i in min1){print min1[i]"\n"max1[i]}}' file
复制代码

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
4 [报告]
发表于 2016-08-25 23:31 |只看该作者
  1. awk '{t=$1"  "$2;a[$2+0]=1;b[t]=$NF;d[t]=$(NF-1)}END{for(i in a) {for(j in b) {split(j,c," +");if(c[2]+0==i) {if(!min&&!max) {max=min=b[j];max1=min=j} if (max<b[j]) {max=b[j];max1=j} if (min>b[j]) {min=b[j];min1=j}}}print min1"   "d[min1]"  "min"\n"max1"   "d[max1]"  "max;min=max=0}}' file
复制代码
回复 1# qjpoo


论坛徽章:
0
5 [报告]
发表于 2016-08-26 00:27 |只看该作者
  1. awk -F"[[ :]+" 'NR>1{s=$2$3;a[s,$NF]=$0;if(b[s]<$NF){b[s]=$NF};if(!c[s]){c[s]=$NF}else{if(c[s]>$NF){c[s]=$NF}}}END{for(x in b){print a[x,b[x]]"\n"a[x,c[x]]}}' 1
复制代码

论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
6 [报告]
发表于 2016-08-26 10:44 |只看该作者
  1. awk '!a[$1,+$2]++{s=$1""+$2;max[s]=min[s]=$NF;mx[s]=mn[s]=$0;next}{if(max[s]<$NF){max[s]=$NF;mx[s]=$0}else if(min[s]>$NF){min[s]=$NF;mn[s]}}END{l=asorti(max,smax);for(i=1;i<=l;++i)print mn[smax[i]]"\n"mx[smax[i]]}'
复制代码

论坛徽章:
0
7 [报告]
发表于 2016-08-26 11:27 |只看该作者
  1. sort -k2.1,2.3n -k4n file | awk 'END{print b}+$2!=a&&a{print b"\n"$0}{a=+$2;b=$0}NR==1'
  2. [2016-08-23  19:20:30]   192.168.1.8  0.11
  3. [2016-08-23  19:30:30]   192.168.1.8  0.21
  4. [2016-08-23  20:20:40]   192.168.1.8  0.11
  5. [2016-08-23  20:24:30]   192.168.1.8  0.22
复制代码

论坛徽章:
36
摩羯座
日期:2013-09-23 16:37:312015年亚洲杯之沙特阿拉伯
日期:2015-04-14 09:10:172015亚冠之柏太阳神
日期:2015-06-25 08:48:212015亚冠之武里南联
日期:2015-07-28 09:01:082015亚冠之莱赫维亚
日期:2015-07-28 15:44:172015亚冠之柏斯波利斯
日期:2015-09-06 14:08:52白银圣斗士
日期:2015-11-25 17:06:2815-16赛季CBA联赛之吉林
日期:2015-12-09 16:59:072016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之辽宁
日期:2016-04-14 09:29:04luobin
日期:2016-06-17 17:46:3615-16赛季CBA联赛之天津
日期:2016-08-16 14:11:01
8 [报告]
发表于 2016-08-26 11:28 |只看该作者
  1. awk -F '[: ]+' '{e=$1 $2 $5}$NF>a[e]{a[e]=$NF;b[e]=$0}!c[e]||c[e]>$NF{c[e]=$NF;d[e]=$0}END{for(n in a)print b[n]"\n"d[n]}'
复制代码

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
9 [报告]
发表于 2016-08-26 15:08 |只看该作者
  1. sort -k1,1n -k2,2n -k4,4n|sed -r '1N;:a;N;/^([^:]*:).*\n\1[^\n]*$/{s/\n[^\n]*//;ta};P;D'
复制代码

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
10 [报告]
发表于 2016-08-26 18:07 |只看该作者
  1. def get_content(fname):
  2.     with open(fname) as fs:
  3.         return fs.read().strip().split('\n')


  4. def get_max_min(content):


  5.     data = {}
  6.     for line in content:
  7.         l = line.split()
  8.         key =  l[0][1:] + ' ' + l[1].split(':')[0]
  9.         if key in data:
  10.             data[key].append(l[3])
  11.         else:
  12.             data[key] = [l[3]]

  13.     return data

  14. def main():
  15.     fname = '1'
  16.     content = get_content(fname)
  17.     for k, v  in  get_max_min(content).items():
  18.         min_num = min(v)
  19.         max_num = max(v)
  20.         for line in content:
  21.             l = line.split()
  22.             key =  l[0][1:] + ' ' + l[1].split(':')[0]
  23.             if key == k  and  (l[3] == min_num or l[3]== max_num):
  24.                 print line


  25. if __name__ == '__main__':
  26.     main()

  27. 结果
  28. [2016-08-23  19:20:30]   192.168.1.8  0.11
  29. [2016-08-23  19:30:30]   192.168.1.8  0.21
  30. [2016-08-23  20:20:40]   192.168.1.8  0.11
  31. [2016-08-23  20:24:30]   192.168.1.8  0.22
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP