Awk скрипт, чтобы получить среднее время - PullRequest
1 голос
/ 15 сентября 2009

У меня есть файл с отметками времени в формате:

HH:MM:SS.MS

, например

00: 04: 02,08

00: 04: 01,08

Каждая временная метка находится на отдельной строке, обычно это две строки в файле

Мне нужно написать сценарий awk, чтобы вычислить среднее время. Я довольно наивен в сценариях awk , поэтому, если кто-нибудь может дать мне фрагмент кода, это очень поможет.

Даже решение сценария оболочки (bash) поможет.

1 Ответ

8 голосов
/ 15 сентября 2009

/..:..:..\./ {
  ++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
$ 

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...