免费注册 查看新帖 |

Chinaunix

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

关于门禁刷卡记录的精简处理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-08 17:23 |只看该作者 |倒序浏览
现在有一份门禁刷卡记录的文件,大致格式如下。现在需要对文件进行处理,保留每天每个人最早和最晚的一条记录,精简出每人的出勤情况,不知用shell如何实现,谢谢!
------------------------------------------------------------------------------------------------------------------------
2007-7-10 11:08:49        门禁接受: 读卡器                R27-26                207         王五
2007-7-10 8:34:48        门禁接受: 读卡器                R23-27                207         王五
2007-7-10 9:05:02        门禁接受: 读卡器                R23-27                207         王五
2007-7-10 9:38:53        门禁接受: 读卡器                R23-34                207         王五
2007-7-10 9:41:26        门禁接受: 读卡器                R23-33                207         王五
2007-7-11 10:05:19        门禁接受: 读卡器                R23-28                207         王五
2007-7-11 9:54:24        门禁接受: 读卡器                R26-19                207         王五
2007-7-11 9:54:41        门禁接受: 读卡器                R26-19                207         王五
2007-7-11 9:54:41        门禁接受: 读卡器                R26-20                207         王五
2007-7-11 9:54:57        门禁接受: 读卡器                R26--16                207         王五
2007-7-11 9:56:34        门禁接受: 读卡器                R23-27                207         王五
2007-7-12 10:27:11        门禁接受: 读卡器                R23-27                207         王五
2007-7-12 8:55:51        门禁接受: 读卡器                R27-26                207         王五
2007-7-12 8:56:19        门禁接受: 读卡器                R27-25                207         王五
2007-7-12 8:57:01        门禁接受: 读卡器                R27-26                207         王五
2007-7-12 9:08:20        门禁接受: 读卡器                R27-25                207         王五
2007-7-13 11:16:21        门禁接受: 读卡器                R26-31                207         王五
2007-7-13 11:19:07        门禁接受: 读卡器                R23-27                207         王五
2007-7-13 9:30:18        门禁接受: 读卡器                R23-41                207         王五
2007-7-13 9:30:51        门禁接受: 读卡器                R23-27                207         王五
2007-7-13 9:56:08        门禁接受: 读卡器                R23-24                207         王五
2007-7-10 10:35:52        门禁接受: 读卡器                R23-35                410         张三
2007-7-10 17:38:18        门禁接受: 读卡器                R23-47                410         张三
2007-7-10 8:50:19        门禁接受: 读卡器                R23-48                410         张三
2007-7-10 8:50:26        门禁接受: 读卡器                R23-36                410         张三
2007-7-11 12:21:44        门禁接受: 读卡器                R23-35                410         张三
2007-7-11 9:28:00        门禁接受: 读卡器                R23-33                410         张三
2007-7-11 9:33:33        门禁接受: 读卡器                R23-33                410         张三
2007-7-11 9:35:03        门禁接受: 读卡器                R23-34                410         张三
2007-7-11 9:44:59        门禁接受: 读卡器                R23-33                410         张三
2007-7-12 10:27:00        门禁接受: 读卡器                R23-35                410         张三
2007-7-12 10:27:05        门禁接受: 读卡器                R23-47                410         张三
2007-7-12 9:43:03        门禁接受: 读卡器                R25-31                410         张三
2007-7-12 9:44:01        门禁接受: 读卡器                R23-48                410         张三
2007-7-12 9:44:08        门禁接受: 读卡器                R23-36                410         张三
2007-7-12 9:45:10        门禁接受: 读卡器                R23-33                410         张三
2007-7-13 10:24:46        门禁接受: 读卡器                R23-35                410         张三
2007-7-13 10:24:54        门禁接受: 读卡器                R23-47                410         张三
2007-7-13 17:07:03        门禁接受: 读卡器                R23-33                410         张三
2007-7-13 18:27:13        门禁接受: 读卡器                R23-47                410         张三
2007-7-13 9:01:46        门禁接受: 读卡器                R23-48                410         张三
2007-7-10 10:36:46        门禁接受: 读卡器                R23-33                398         李四
2007-7-10 9:34:47        门禁接受: 读卡器                R23-48                398         李四
2007-7-10 9:34:54        门禁接受: 读卡器                R23-36                398         李四
2007-7-11 11:21:47        门禁接受: 读卡器                R23-33                398         李四
2007-7-11 11:41:09        门禁接受: 读卡器                R23-35                398         李四
2007-7-11 9:09:58        门禁接受: 读卡器                R23-48                398         李四
2007-7-11 9:10:05        门禁接受: 读卡器                R23-36                398         李四
2007-7-12 11:54:50        门禁接受: 读卡器                R23-35                398         李四
2007-7-12 9:03:47        门禁接受: 读卡器                R23-41                398         李四
2007-7-12 9:04:17        门禁接受: 读卡器                R23-34                398         李四
2007-7-12 9:24:45        门禁接受: 读卡器                R23-33                398         李四
2007-7-13 10:15:18        门禁接受: 读卡器                R23-33                398         李四
2007-7-13 10:15:38        门禁接受: 读卡器                R23-20                398         李四
2007-7-13 9:31:00        门禁接受: 读卡器                R23-19                398         李四
2007-7-13 9:42:39        门禁接受: 读卡器                R23-34                398         李四
------------------------------------------------------------------------------------------------------------------------------------------------------

论坛徽章:
0
2 [报告]
发表于 2007-08-08 18:09 |只看该作者
时间补零;sort多字段排序;去除不要的记录

论坛徽章:
0
3 [报告]
发表于 2007-08-08 18:14 |只看该作者

回复 #2 doctorjxd 的帖子

不知道通过shell如何去除不需要的数据,数据量大概有60多万条。

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
4 [报告]
发表于 2007-08-09 08:55 |只看该作者
我只能做到取单天的纪录 (你可以另用个循环替换命令中的日期得出结果)

2007-7-11 每人最早的纪录
$ cat list |sed 's/://g' |grep "2007-7-11" |sort -k2r |awk  '! a[$NF]++'
2007-7-11 95634        门禁接受 读卡器                R23-27                207         王五
2007-7-11 94459        门禁接受 读卡器                R23-33                410         张三
2007-7-11 91005        门禁接受 读卡器                R23-36                398         李四

2007-7-11 每人最晚的纪录
$ cat list |sed 's/://g' |grep "2007-7-11" |sort -k2 |awk  '! a[$NF]++'
2007-7-11 100519        门禁接受 读卡器                R23-28                207         王五
2007-7-11 112147        门禁接受 读卡器                R23-33                398         李四
2007-7-11 122144        门禁接受 读卡器                R23-35                410         张三

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
5 [报告]
发表于 2007-08-09 10:27 |只看该作者
  1. awk '!b[$1" "$NF]{b[$1" "$NF]=$2}{gsub(/:/,"");if($2<b[$1" "$NF]){b[$1" "$NF]=$2}if($2>d[$1" "$NF]){d[$1" "$NF]=$2}}END{for(i in b) print i,b[i],d[i]}' urfile
复制代码


看看这样的结果行不行。

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
6 [报告]
发表于 2007-08-09 11:13 |只看该作者
原帖由 ly5066113 于 2007-8-9 10:27 发表
awk '!b[$1" "$NF]{b[$1" "$NF]=$2}{gsub(/:/,"");if($2d[$1" "$NF]){d[$1" "$NF]=$2}}END{for(i in b) print i,b,d}' urfile

看看这样的结果行不行。

$ awk '!b[$1" "$NF]{b[$1" "$NF]=$2}{gsub(/:/,"");if($2<b[$1" "$NF]){b[$1" "$NF]
=$2}if($2>d[$1" "$NF]){d[$1" "$NF]=$2}}END{for(i in b) print i,b,d}' list
2007-7-13 王五 93018 111907
2007-7-11 王五 95424 100519
2007-7-10 李四 93447 103646
2007-7-10 王五 83448 110849
2007-7-13 张三 90146 182713
2007-7-13 李四 93100 101538
2007-7-12 张三 94303 102705
2007-7-12 李四 90347 115450
2007-7-11 张三 92800 122144
2007-7-12 王五 85551 102711
2007-7-11 李四 90958 114109
2007-7-10 张三 85019 173818

好像不行,我看到每天有三个记录。

论坛徽章:
0
7 [报告]
发表于 2007-08-09 11:16 |只看该作者
原帖由 rdcwayx 于 2007-8-9 08:55 发表
我只能做到取单天的纪录 (你可以另用个循环替换命令中的日期得出结果)

2007-7-11 每人最早的纪录
$ cat list |sed 's/://g' |grep "2007-7-11" |sort -k2r |awk  '! a[$NF]++'
2007-7-11 95634        门 ...

这样写的排序有点问题,应该是sort -k2n,是排序最早, -k2nr是排序最晚.

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
8 [报告]
发表于 2007-08-09 11:21 |只看该作者
嗯,你是对的。

$ cat list |sed 's/://g' |grep "2007-7-11" |sort -k2rn |awk  '! a[$NF]++'
2007-7-11 122144        门禁接受 读卡器                R23-35                410         张三
2007-7-11 114109        门禁接受 读卡器                R23-35                398         李四
2007-7-11 100519        门禁接受 读卡器                R23-28                207         王五

$ cat list |sed 's/://g' |grep "2007-7-11" |sort -k2n |awk  '! a[$NF]++'
2007-7-11 90958        门禁接受 读卡器                R23-48                398         李四
2007-7-11 92800        门禁接受 读卡器                R23-33                410         张三
2007-7-11 95424        门禁接受 读卡器                R26-19                207         王五

论坛徽章:
0
9 [报告]
发表于 2007-08-09 14:28 |只看该作者
cat list |sed 's/://g'|sed 's/-//g'  |sort -k6 -k1n -k2n |awk '!b[$1" "$NF]{b[$1" "$NF]=$2}{gsub(/:/,"";if($2<b[$1" "$NF]){b[$1" "$NF]=$2}}END{for(i in b) print i,b}'收集所有人员每天最早的打卡记录
cat list |sed 's/://g'|sed 's/-//g'  |sort -k6 -k1nr -k2nr |awk '!b[$1" "$NF]{b[$1" "$NF]=$2}{gsub(/:/,"";if($2>b[$1" "$NF]){b[$1" "$NF]=$2}}END{for(i in b) print i,b}'收集所有人员每天最迟的打卡记录
勉强集合上几位的思路, 把记录都输入到一个文本,再排序

[ 本帖最后由 mxbao 于 2007-8-9 14:43 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2007-08-09 14:44 |只看该作者
汗,,不知道为什么字体会变了,最后是print  i,b :em11:
         
.............................

[ 本帖最后由 mxbao 于 2007-8-9 14:47 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP