Chinaunix

标题: 统计某段时间出现同一个值的次数及持续多长时间 [打印本页]

作者: stshen    时间: 2006-06-01 14:44
标题: 统计某段时间出现同一个值的次数及持续多长时间
2006-05-18 09:12:00         500
2006-05-18 10:15:00         500
2006-05-18 10:12:00         500
2006-05-18 10:20:02         194
2006-05-18 10:35:02         161
2006-05-18 10:40:02         151
2006-05-18 11:12:04         500
......                                500
......                                500
2006-05-19 11:50:04         500
.......
时间和值持续变化

统计:每出现 500 值的次数及持续多长时间
输出格式为:
次数         开始               结束         持续时间
N         11:12:04         11:50:04     38分
作者: stshen    时间: 2006-06-01 15:23
标题: 大侠们可否给个建议怎么用shell实现!
先谢谢!

输出格式为:
         次数         开始               结束         持续时间
1         N         09:12:00         10:12:00      60分
2         X         11:12:04         11:50:04     38分
作者: stshen    时间: 2006-06-01 15:58
标题: 请大侠们给出一点建议!谢谢
请大侠们给出一点建议,用什么方法可判断在这段时间是第一次出现及最后一次出现这个值!谢谢!
作者: stshen    时间: 2006-06-02 08:46
斑竹能否帮帮忙呀!谢谢!
作者: woodie    时间: 2006-06-02 09:25
就是个时间的比较问题呗,给个思路:
归算为分钟或秒后比较。
作者: wd    时间: 2006-06-02 10:06
先查找有哪些值,就是哪些500,194,161的
然后针对各个值grep之后,再按照时间排序,这样排序后最上面和最下面的就是时间的开始和结束点了,grep到的个数就是出现的次数了。

排序不知道sort命令可以实现不。

[ 本帖最后由 wd 于 2006-6-2 10:15 编辑 ]
作者: 寂寞烈火    时间: 2006-06-02 10:43
将以500为结尾的行折成一行,将每行第一,二列(第一次出现时间)和倒数第二第三列(最后一次出现时间)的时间折成秒并相减!
思路大致如此吧~

[ 本帖最后由 寂寞烈火 于 2006-6-2 10:44 编辑 ]
作者: stshen    时间: 2006-06-02 11:45
谢谢各位!还有没有更好的方法呢!
作者: stshen    时间: 2006-06-12 16:17
刚刚接触shell ,DXGGMM们能不能写个简单的例子参考参考,先谢谢您!!!
作者: shitou9000    时间: 2006-06-19 01:59
练手
  1. awk 'BEGIN{
  2. i=500
  3. }
  4. NR=FNR{
  5. if(i==$3)
  6.     a[++j]=$2
  7. else
  8.     {
  9.     if(j>1)print j,a[1],a[j],i
  10.     a[1]=$2
  11.     i=$3
  12.     j=1
  13.     }
  14. }
  15. END{    if(j>1)print j,a[1],a[j],i
  16. }
  17. ' a
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2