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