免费注册 查看新帖 |

Chinaunix

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

请教一个较复杂的时间比较问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-12 17:46 |只看该作者 |倒序浏览
各位,现在碰到一个较为复杂的时间比较,弄了许久还没完成,请大家帮忙看看,谢谢!!

file内容如下:
12368888&2010-04-11 23:59:53&2010-04-11 23:59:53&&
23589666&2010-04-11 23:29:49&2010-04-11 23:59:49&&
13568433&2010-03-11 23:29:44&2010-03-21 23:59:44&&
13568433&2010-03-08 23:29:37&2010-04-11 23:59:37&&
13568433&2010-04-05 23:29:37&2010-05-21 23:59:37&&
23589882&2010-04-06 23:29:49&2010-04-11 23:59:49&&
23589882&2010-04-11 23:29:49&2010-04-18 23:59:49&&
13656732&2010-04-11 23:29:53&2010-04-18 23:59:53&&
62556166&2010-04-11 23:29:49&2010-04-28 23:59:49&&


文件以&作为分割符,若第一列数字出现三次相同的话
根据第三列判断,(第三列的日期大于当天日期的输出到文件fileB上;小于或等于当天日期的输出到文件fileA;三行信息里面,第三列日期最小那行就不用输出了)

若第一列数字出现二次相同的话
根据第三列判断,(第三列的日期大于当天日期的输出到文件fileB上;小于或等于当天日期的输出到文件fileA)

若第一列数字出现一次的话
根据第三列判断,(第三列的日期大于当天日期的输出到文件fileB上;小于或等于当天日期的输出到文件fileA)

希望通过脚本处理后,fileA内容输出为:
12368888&2010-04-11 23:59:53&2010-04-11 23:59:53&&
23589666&2010-04-11 23:29:49&2010-04-11 23:59:49&&
13568433&2010-03-08 23:29:37&2010-04-11 23:59:37&&
23589882&2010-04-06 23:29:49&2010-04-11 23:59:49&&

fileB内容为:
13568433&2010-04-05 23:29:37&2010-05-21 23:59:37&&
23589882&2010-04-11 23:29:49&2010-04-18 23:59:49&&
13656732&2010-04-11 23:29:53&2010-04-18 23:59:53&&
62556166&2010-04-11 23:29:49&2010-04-28 23:59:49&&

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
2 [报告]
发表于 2010-04-12 17:50 |只看该作者
awk, 遍历两次。

论坛徽章:
0
3 [报告]
发表于 2010-04-12 18:19 |只看该作者
第一列若有三条相同的,遍历2次还是不能比较啊

论坛徽章:
0
4 [报告]
发表于 2010-04-12 23:09 |只看该作者
还没解决问题,各位能否帮忙下呢?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
5 [报告]
发表于 2010-04-12 23:18 |只看该作者
回复 4# filwy


    你的"当天日期"是指系统当前日期?

论坛徽章:
0
6 [报告]
发表于 2010-04-12 23:27 |只看该作者
哦,是的。是指系统当前的日期

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
7 [报告]
发表于 2010-04-12 23:34 |只看该作者
对于“第三列最小”的情况如何判断?如果第三列的日期都一样呢?

论坛徽章:
0
8 [报告]
发表于 2010-04-12 23:42 |只看该作者
第三列日期不会出现一样的情况。

论坛徽章:
0
9 [报告]
发表于 2010-04-13 00:02 |只看该作者
回复 5# blackold


    哦,是的啊。当前日期是系统的当前时间。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
10 [报告]
发表于 2010-04-13 00:06 |只看该作者
本帖最后由 blackold 于 2010-04-13 00:21 编辑

try
  1. $ awk -F '[ &]' 'BEGIN{d=strftime("%Y-%m-%d")}NR==FNR{r[$1]++;if(!m[$1]||m[$1]>$4)m[$1]=$4;next}!(r[$1]==3&&m[$1]==$4){if($4>d)print>"fileB";else print>"fileA"}' urfile urfile
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP