【发布时间】:2009-09-15 05:32:06
【问题描述】:
我有一个带有时间戳的文件,格式为:
HH:MM:SS.MS
例如
00:04:02.08
00:04:01.08
每个时间戳位于不同的行,通常在一个文件中只有两行
我需要编写一个 awk 脚本来计算这些时间的平均值。我对 awk 脚本编写很幼稚,所以如果有人可以请给我一个 code-sn-p,它将有很多帮助。
即使是 shell 脚本 (bash) 解决方案也会有所帮助。
【问题讨论】:
我有一个带有时间戳的文件,格式为:
HH:MM:SS.MS
例如
00:04:02.08
00:04:01.08
每个时间戳位于不同的行,通常在一个文件中只有两行
我需要编写一个 awk 脚本来计算这些时间的平均值。我对 awk 脚本编写很幼稚,所以如果有人可以请给我一个 code-sn-p,它将有很多帮助。
即使是 shell 脚本 (bash) 解决方案也会有所帮助。
【问题讨论】:
/..:..:..\./ {
++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)
}
}
然后运行它...
$ 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
$
【讨论】: