Home | History | Annotate | Line # | Download | only in traceroute
median.awk revision 1.1.1.3
      1 $NetBSD: median.awk,v 1.1.1.3 1997/10/03 22:25:29 christos Exp $
      2 /^ *[0-9]/	{
      3 	# print out the median time to each hop along a route.
      4 	tottime = 0; n = 0;
      5 	for (f = 5; f <= NF; ++f) {
      6 		if ($f == "ms") {
      7 			++n
      8 			time[n] = $(f - 1)
      9 		}
     10 	}
     11 	if (n > 0) {
     12 		# insertion sort the times to find the median
     13 		for (i = 2; i <= n; ++i) {
     14 			v = time[i]; j = i - 1;
     15 			while (time[j] > v) {
     16 				time[j+1] = time[j];
     17 				j = j - 1;
     18 				if (j < 0)
     19 					break;
     20 			}
     21 			time[j+1] = v;
     22 		}
     23 		if (n > 1 && (n % 2) == 0)
     24 			median = (time[n/2] + time[(n/2) + 1]) / 2
     25 		else
     26 			median = time[(n+1)/2]
     27 
     28 		print $1, median
     29 	}
     30 }
     31