免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk可以时间比大小不 [复制链接]

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之上海
日期:2016-05-05 09:45:14
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-03-09 10:10 |只看该作者 |倒序浏览
如下日志
152     2016-3-7 9:30
152     2016-3-7 9:30
152     2016-3-7 19:5
152     2016-3-7 19:5
152     2016-3-8 9:21
152     2016-3-8 9:21
152     2016-3-8 18:41
152     2016-3-8 18:41
152     2016-3-9 9:23

怎么出来一天中最小的时间和最大的时间呢

论坛徽章:
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
2 [报告]
发表于 2016-03-09 10:34 |只看该作者
回复 1# badb0y
  1. awk '!s[$2]{s[$2]=e[$2]=$3}{e[$2]=$3}END{for(i in s)print i, s[i], e[i]}'
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2016-03-09 10:46 |只看该作者
回复 1# badb0y

$ awk 'function gt(t){split(t,x,"[- :]");return(sprintf("%4d-%02d-%02d %02d:%02d",x[1],x[2],x[3],x[4],x[5]))}{t=$2" "$3;a[t]=gt(t);if(a[min]>a[t]||min=="")min=t;if(a[max]<a[t]||max=="")max=t}END{print "min time="min;print "max time="max}' FILE
min time=2016-3-7 9:30
max time=2016-3-9 9:23

   

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之上海
日期:2016-05-05 09:45:14
4 [报告]
发表于 2016-03-09 10:49 |只看该作者
回复 2# elu_ligao

大神,结果好像乱了
2016-3-6 8:41 13:40
2016-3-7 8:2 22:15
2016-3-8 6:25 22:52
2016-3-9 6:18 9:57


   

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之上海
日期:2016-05-05 09:45:14
5 [报告]
发表于 2016-03-09 10:50 |只看该作者
回复 3# jason680

是一天当中的最大和最小,不是一个文本中的
   

论坛徽章:
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-03-09 10:52 |只看该作者
回复 4# badb0y


    你这个不是你上面给的文本吧

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之上海
日期:2016-05-05 09:45:14
7 [报告]
发表于 2016-03-09 11:23 |只看该作者
回复 6# elu_ligao

恩,是我搞错了,前面152,在文件里面还有其它的,我grep出来再用你脚本就OK了

   

论坛徽章:
0
8 [报告]
发表于 2016-03-09 12:02 |只看该作者
吸收点楼上大牛的精华,啰嗦点:
  1. [root@localhost tmp]# awk 'BEGIN {getline; min[$2]=$3; max[$2]=$3;getline; }  { if (! min[$2]) {min[$2]=$3; max[$2]=$3;} else { split(min[$2], mi); split(max[$2], ma); split($3, n); if ((mi[1] < n[1]) || (mi[1]==n[1] && mi[2] < n[2])) { min[$2]=$3;} else if ((ma[1] > n[1]) || (ma[1]==n[1] && ma[2] < n[2])) {max[$2]=$3;} }} END {for (i in min) {print i, min[i], max[i]}}' /tmp/a.txt
  2. 2016-3-7 9:30 19:5
  3. 2016-3-8 9:21 18:41
  4. 2016-3-9 9:23 9:23
  5. [root@localhost tmp]# cat /tmp/a.txt
  6. 152     2016-3-7 9:30
  7. 152     2016-3-7 9:30
  8. 152     2016-3-7 19:5
  9. 152     2016-3-7 19:5
  10. 152     2016-3-8 9:21
  11. 152     2016-3-8 9:21
  12. 152     2016-3-8 18:41
  13. 152     2016-3-8 18:41
  14. 152     2016-3-9 9:23
复制代码

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之上海
日期:2016-05-05 09:45:14
9 [报告]
发表于 2016-03-10 09:47 |只看该作者
回复 8# tseesing
大神的我到现在还是没看太懂,,您的我到是看懂了,哈哈

   

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
10 [报告]
发表于 2016-03-10 10:03 |只看该作者
  1. #!/bin/bash

  2. while read line
  3. do
  4.   num=`echo ${line}|awk '{print $1}'`
  5.   time=`echo ${line}|awk '{print $2,$3}'`
  6.   Time=`date -d "${time}" +%s`
  7.   echo ${num} ${Time} >> file1
  8. done < file

  9. start_time=`cat file1 |sort|head -1`
  10. stop_time=`cat file1|sort -r|head -1`

  11. print_start_num=`echo ${start_time}|awk '{print $1}'`
  12. print_start_Time=`echo ${start_time}|awk '{print $2}'`
  13. print_start_time=`date -d @${print_start_Time} +"%Y-%m-%d %H:%M"`
  14. echo ${print_start_num} ${print_start_time}

  15. print_stop_num=`echo ${stop_time}|awk '{print $1}'`
  16. print_stop_Time=`echo ${stop_time}|awk '{print $2}'`
  17. print_stop_time=`date -d @${print_stop_Time} +"%Y-%m-%d %H:%M"`
  18. echo ${print_stop_num} ${print_stop_time}
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP