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á.

¿Fue útil?

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
scroll top