Awk Skript Zeitmittel zu erhalten
Frage
Ich habe eine Datei mit Zeitstempel im Format:
HH:MM:SS.MS
z.
00: 04: 02.08
00: 04: 01.08
Jeder Zeitstempel auf einer anderen Linie, in der Regel nur zwei Zeilen in einer Datei
Ich brauche einen awk-Skript schreiben Durchschnitt dieser Zeiten zu berechnen. Ich bin ganz naiv in awk Scripting, so dass, wenn jemand kann mir bitte geben Sie einen Code-Schnipsel, wird es eine große Hilfe.
Auch ein Shell-Skript (bash) Lösung helfen.
Lösung
/..:..:..\./ {
++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)
}
}
Und es läuft ...
$ 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
$
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow