免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5547 | 回复: 3

[文本处理] awk 实现日期最大提取需求 [复制链接]

论坛徽章:
0
发表于 2021-10-28 13:03 |显示全部楼层
基础文件urfile01
==================
  1. user01
  2. user02
  3. user03
复制代码




用户user*登录日志文件urfile02
==============================
  1. Thu Oct 28 03:45:03 2021 user01
  2. Thu Oct 28 03:42:03 2021 user01
  3. Thu Oct 28 03:40:03 2021 user01
  4. Thu Oct 28 03:50:03 2021 user02
复制代码



想要获取的结果是,
1. 在日志文件中有记录的用户获取最大时间的一条记录
2. 在日志文件中没有记录的用户,指定一个时间戳,例如 2021/01/01 00:00:00

展示结果:

  1. <div>user01 Thu Oct 28 03:45:03</div><div>user02 Thu Oct 28 03:50:03</div><div>user03 2021/01/01 00:00:00</div>
复制代码

这个通过AWK命令如何实现?

论坛徽章:
6
15-16赛季CBA联赛之浙江
日期:2021-07-14 11:18:4315-16赛季CBA联赛之浙江
日期:2021-08-20 17:26:1015-16赛季CBA联赛之天津
日期:2021-09-01 10:56:4619周年集字徽章-19
日期:2021-10-12 11:08:032016科比退役纪念章
日期:2021-10-12 11:33:4515-16赛季CBA联赛之深圳
日期:2021-11-11 14:25:38
发表于 2021-10-28 14:25 |显示全部楼层
本帖最后由 a5love3n 于 2021-10-28 20:25 编辑

重复,编辑掉

论坛徽章:
6
15-16赛季CBA联赛之浙江
日期:2021-07-14 11:18:4315-16赛季CBA联赛之浙江
日期:2021-08-20 17:26:1015-16赛季CBA联赛之天津
日期:2021-09-01 10:56:4619周年集字徽章-19
日期:2021-10-12 11:08:032016科比退役纪念章
日期:2021-10-12 11:33:4515-16赛季CBA联赛之深圳
日期:2021-11-11 14:25:38
发表于 2021-10-28 14:27 |显示全部楼层
本帖最后由 a5love3n 于 2021-10-28 20:26 编辑

回复 1# ontherd

  1. awk 'NR==FNR{a[$0]=$0" 2021/01/01 00:00:00"}NR>FNR&&!b[$6]++{if(a[$6]){a[$6]=$6" "$1" "$2" "$3" "$4}}END{for(i in a){print a[i]}}' urfile01 urfile02
复制代码

论坛徽章:
24
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-03 16:56:4615-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:1915-16赛季CBA联赛之深圳
日期:2018-06-15 14:59:37
发表于 2021-11-09 13:09 |显示全部楼层
回复 1# ontherd


  1. cat 1
  2. user01
  3. user02
  4. user03

  5. cat 2
  6. Thu Oct 28 03:45:03 2021 user01
  7. Thu Oct 28 03:42:03 2021 user01
  8. Thu Oct 28 03:40:03 2021 user01
  9. Thu Oct 28 03:50:03 2021 user02

  10. awk 'BEGIN{a="2021/01/01 00:00:00";b["Jan"]=1;b["Feb"]=2;b["Mar"]=3;b["Apr"]=4;b["May"]=5;b["Jun"]=6;b["Jul"]=7;b["Aug"]=8;b["Sep"]=9;b["Oct"]=10;b["Nov"]=11;b["Dec"]=12}FILENAME==ARGV[1]{split($0,c,"[ :]");d=mktime(""c[7]" "b[c[2]]" "c[3]" "c[4]" "c[5]" "c[6]"");e=$6;if(f[e]<d){f[e]=d;NF=NF-2;g[e]=$0}}FILENAME==ARGV[2]{printf("<div>%s %s</div>",$1,g[$1]?g[$1]:a)}' 2 1
  11. <div>user01 Thu Oct 28 03:45:03</div><div>user02 Thu Oct 28 03:50:03</div><div>user03 2021/01/01 00:00:00</div>
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP