| 1 | #!/bin/awk -f |
| 2 | # |
| 3 | # Copyright (c) 1990 The Regents of the University of California. |
| 4 | # All rights reserved. |
| 5 | # |
| 6 | # This code is derived from software contributed to Berkeley by |
| 7 | # Van Jacobson. |
| 8 | # |
| 9 | # %sccs.include.redist.sh% |
| 10 | # |
| 11 | # @(#)median.awk 5.2 (Berkeley) %G% |
| 12 | # |
| 13 | /^ *[0-9]/ { |
| 14 | # print out the median time to each hop along a route. |
| 15 | tottime = 0; n = 0; |
| 16 | for (f = 5; f <= NF; ++f) { |
| 17 | if ($f == "ms") { |
| 18 | ++n |
| 19 | time[n] = $(f - 1) |
| 20 | } |
| 21 | } |
| 22 | if (n > 0) { |
| 23 | # insertion sort the times to find the median |
| 24 | for (i = 2; i <= n; ++i) { |
| 25 | v = time[i]; j = i - 1; |
| 26 | while (time[j] > v) { |
| 27 | time[j+1] = time[j]; |
| 28 | j = j - 1; |
| 29 | if (j < 0) |
| 30 | break; |
| 31 | } |
| 32 | time[j+1] = v; |
| 33 | } |
| 34 | if (n > 1 && (n % 2) == 0) |
| 35 | median = (time[n/2] + time[(n/2) + 1]) / 2 |
| 36 | else |
| 37 | median = time[(n+1)/2] |
| 38 | |
| 39 | print $1, median |
| 40 | } |
| 41 | } |