البرنامج النصي Awk للحصول على متوسطات الوقت

StackOverflow https://stackoverflow.com/questions/1425290

  •  07-07-2019
  •  | 
  •  

سؤال

لدي ملف به طوابع زمنية بالتنسيق:

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
$ 

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top