Awk script para obtener promedios de tiempo
Pregunta
Tengo un archivo con marcas de tiempo en el formato:
HH:MM:SS.MS
por ejemplo
00: 04: 02.08
00: 04: 01.08
Cada marca de tiempo está en una línea diferente, generalmente solo dos líneas en un archivo
Necesito escribir un script awk para calcular el promedio de estos tiempos. Soy bastante ingenuo en las secuencias de comandos awk , por lo que si alguien me puede dar un fragmento de código, será de gran ayuda.
Incluso una solución de script de shell (bash) ayudará.
Solución
/..:..:..\./ {
++count
split($ 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
$
,a,":");
seconds = (a[1] * 60.0 + a[2]) * 60.0 + a[3]
print <*>, 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)
}
}
Y ejecutarlo ...
<*>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow