代码之家  ›  专栏  ›  技术社区  ›  M.N

获取时间平均值的awk脚本

  •  1
  • M.N  · 技术社区  · 15 年前

    我有一个带有时间戳的文件,格式为:

    HH:MM:SS.MS

    例如

    00∶04: 2.08

    00∶04: 1.08

    每个时间戳位于不同的行上,通常一个文件中只有两行

    我需要写一个awk脚本来计算这些时间的平均值。我很天真 AWK 脚本编写,所以如果有人能给我一个代码片段,它会有很大的帮助。

    即使是shell脚本(bash)解决方案也会有所帮助。

    1 回复  |  直到 15 年前
        1
  •  8
  •   DigitalRoss    15 年前

    /..:..:..\./ {
      ++count
      split($0,a,":");
      seconds = (a[1] * 60.0 + a[2]) * 60.0 + a[3]
      print $0, seconds
      alltime += seconds
    }
    END {
      if (count > 0) {
        avgtime = alltime / count
        print count, alltime, avgtime
        mins = int(avgtime / 60.0) % 60
        hours = int(avgtime / 60.0 / 60.0)
        secs = avgtime % 60.0
        printf("%02d:%02d:%05.2f\n", hours, mins, secs)
      }
    } 
    

    运行它…


    $ cat test.data
    other stuff
    
        00:04:02.08
    more stuff
    
        00:04:01.08
    
    more stuff
    $ awk -f q.awk < test.data
        00:04:02.08 242.08
        00:04:01.08 241.08
    2 483.16 241.58
    00:04:01.58
    $