البرنامج النصي Awk للحصول على متوسطات الوقت
سؤال
لدي ملف به طوابع زمنية بالتنسيق:
HH:MM:SS.MS
على سبيل المثال
00:04:02.08
00:04:01.08
يكون كل طابع زمني على سطر مختلف، وعادةً ما يكون هناك سطرين فقط في الملف
أحتاج إلى كتابة برنامج نصي awk لحساب متوسط هذه الأوقات.أنا ساذج جدًا محرج البرمجة النصية، لذلك إذا كان بإمكان أي شخص أن يقدم لي مقتطفًا من التعليمات البرمجية، فسيساعدني ذلك كثيرًا.
حتى حل البرنامج النصي (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
$
لا تنتمي إلى StackOverflow