免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2655 | 回复: 12

[文本处理] 查找年份并输出缺少的日期 [复制链接]

论坛徽章:
6
程序设计版块每日发帖之星
日期:2015-12-05 06:20:00数据库技术版块每日发帖之星
日期:2016-02-06 06:20:00数据库技术版块每日发帖之星
日期:2016-03-07 06:20:00程序设计版块每日发帖之星
日期:2016-06-04 06:20:00黑曼巴
日期:2017-02-06 16:31:2615-16赛季CBA联赛之广夏
日期:2017-05-07 09:02:07
发表于 2017-01-10 14:49 |显示全部楼层
本帖最后由 夏洛特猫 于 2017-01-10 16:47 编辑

文件名称date,
文件内容记录了用户名,和每天的签到日期,工作的具体内容,时间年份为2015年
每条数据都包含如上内容,2015年全年为标准,将每名用户缺席的日期统计出来,并将所用用户缺席的日期也进行统计,得出用户缺席天数的最高到最低的一个记录

date 文件内容:
1 20150101 dfdaff
1 20150102 fdfkdjfkdjf
1 20150106 cdsfs
2 20150606 ccwcw
2 20150708 wcweeeeee
2 20151231 dfsfwefe
3 20150102 fffffqwe
3 20150110 fwefq
3 20151122 fwecwe
数据格式如上,有多个用户
则希望能够统计出15年每名用户缺席的日期有哪些之后统计出每天缺席的人数,将缺席的日期按照人数的多少进行排序输出
----------------------
简单来说 找出每个用户2015年那些天没来
之后在每个用户没来的记录中统计出这些没来的天数分别有几个人没来相当于先求出1 用户是 1月2号没来 2月3号没来
2 用户是 2月3日没来 2月8日没来
3 用户是 5月6日没来 12月31日没来
之后根据结果获取没来的日期分别是1月2号 2月3号 2月8日 5月6日 12月31日
之后在输出没来天的用户个数

1月2日则是1个用户没来
2月3日则是2个用户没来
2月8日则是1个
5月6日1个
12月31日1个

----------------------------------------
自己的思路是 先将每个用户分出多个文件,之后对每个文件分别于2015年全年写好的数组日期进行匹配,将没有的月份输出,之后在把每个的输出文件合在一起在进行统计
不知道各位能否用wak和sed简单的实现出来这个?
先谢谢各位啦



论坛徽章:
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
发表于 2017-01-10 16:30 |显示全部楼层

"并统计出所有用户在15年终缺席的月份的一个文件" 这句怎么理解?

论坛徽章:
6
程序设计版块每日发帖之星
日期:2015-12-05 06:20:00数据库技术版块每日发帖之星
日期:2016-02-06 06:20:00数据库技术版块每日发帖之星
日期:2016-03-07 06:20:00程序设计版块每日发帖之星
日期:2016-06-04 06:20:00黑曼巴
日期:2017-02-06 16:31:2615-16赛季CBA联赛之广夏
日期:2017-05-07 09:02:07
发表于 2017-01-10 16:40 |显示全部楼层
抱歉我没表述清除,就是统计出这一年中缺席天数对应的人数相当于前面先对每个人缺席了哪些天输出后,
对缺席天数在进行统计,统计所有的缺席天数中,每个缺席天数中有多少人没来



回复 2# moperyblue





论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-12-17 06:20:00
发表于 2017-01-10 16:53 |显示全部楼层

awk 'BEGIN {s=1420041600;}{user[$1]++;arr[$1,$2]=1} END{ while (s<=1451491200) {now=strftime("%Y%m%d",s);s+=86400;for (i in user) {if(arr[i,now] !=1) print i,now,"absence" }}}' yourfile  

其中$1 是你的用户ID  ,该统计会统计出15年所有用户的缺席日期,结果如下 :
2 20150101 absence
3 20150101 absence
2 20150102 absence
1 20150103 absence
2 20150103 absence
3 20150103 absence
1 20150104 absence
2 20150104 absence
3 20150104 absence
1 20150105 absence
2 20150105 absence
3 20150105 absence
2 20150106 absence
3 20150106 absence
1 20150107 absence
2 20150107 absence
3 20150107 absence
1 20150108 absence
2 20150108 absence
3 20150108 absence
1 20150109 absence
2 20150109 absence 。。。。。。

论坛徽章:
6
程序设计版块每日发帖之星
日期:2015-12-05 06:20:00数据库技术版块每日发帖之星
日期:2016-02-06 06:20:00数据库技术版块每日发帖之星
日期:2016-03-07 06:20:00程序设计版块每日发帖之星
日期:2016-06-04 06:20:00黑曼巴
日期:2017-02-06 16:31:2615-16赛季CBA联赛之广夏
日期:2017-05-07 09:02:07
发表于 2017-01-10 17:13 |显示全部楼层
谢谢回复,不过不知道为什么出现了 wk: line 2: function strftime never defined回复 4# vagrant_1220




论坛徽章:
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
发表于 2017-01-10 17:21 |显示全部楼层

  1. awk 'function f(dt){cmd="date -d "dt" +%s";cmd|getline t;return t}BEGIN{for(i=f(20150101);i<f(20160101);i+=86400){cmd="date -d @"i" +%Y%m%d";cmd|getline x;a[x]}}{b[$1,$2]=$0;c[$1]}END{for(i in c)for(j in a){if(!b[i,j]){print i,j;d[j]++}};print "以上是各用户对应的缺席日期"RS"==="RS"以下是各日期对应的缺席人数";for(k in d){print k,d[k]|"sort -k2nr"}}' file
复制代码

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-12-17 06:20:00
发表于 2017-01-10 17:34 |显示全部楼层
检查你的awk版本 或执行 sudo apt-get install gawk  。我的测试版本是  awk --version
GNU Awk 3.1.5
Copyright (C) 1989, 1991-2005 Free Software Foundation.

论坛徽章:
6
程序设计版块每日发帖之星
日期:2015-12-05 06:20:00数据库技术版块每日发帖之星
日期:2016-02-06 06:20:00数据库技术版块每日发帖之星
日期:2016-03-07 06:20:00程序设计版块每日发帖之星
日期:2016-06-04 06:20:00黑曼巴
日期:2017-02-06 16:31:2615-16赛季CBA联赛之广夏
日期:2017-05-07 09:02:07
发表于 2017-01-10 17:40 |显示全部楼层
好的我再试试 谢谢您啦回复 7# vagrant_1220


论坛徽章:
6
程序设计版块每日发帖之星
日期:2015-12-05 06:20:00数据库技术版块每日发帖之星
日期:2016-02-06 06:20:00数据库技术版块每日发帖之星
日期:2016-03-07 06:20:00程序设计版块每日发帖之星
日期:2016-06-04 06:20:00黑曼巴
日期:2017-02-06 16:31:2615-16赛季CBA联赛之广夏
日期:2017-05-07 09:02:07
发表于 2017-01-10 17:49 |显示全部楼层
thanks 多谢您的一直帮助 自身还是要加强学习 老用笨方法解决
回复 6# moperyblue


论坛徽章:
0
发表于 2017-01-12 09:49 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP