Domanda

Ho un file con timestamp nel formato:

HH: MM: SS.MS

per es.

  

00: 04: 02.08

     

00: 04: 01.08

Ogni timestamp si trova su una riga diversa, in genere solo due righe in un file

Devo scrivere uno script awk per calcolare la media di questi tempi. Sono abbastanza ingenuo negli script awk , quindi se qualcuno può darmi uno snippet di codice, sarà di grande aiuto.

Anche una soluzione di script di shell (bash) sarà di aiuto.

È stato utile?

Soluzione


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

E eseguendolo ...


<*>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top