Скрипт Awk для получения средних значений по времени
Вопрос
У меня есть файл с временными метками в формате:
HH:MM:SS.MS
например ,
00:04:02.08
00:04:01.08
Каждая временная метка находится в отдельной строке, обычно всего в двух строках в файле
Мне нужно написать awk-скрипт, чтобы вычислить среднее значение этих времен.Я довольно наивен в авк скриптинг, поэтому, если кто-нибудь может, пожалуйста, дать мне фрагмент кода, это очень поможет.
Поможет даже решение shell script (bash).
Решение
/..:..:..\./ {
++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
$
Не связан с StackOverflow