Script Awk per ottenere medie temporali
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.
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