Commit | Line | Data |
---|---|---|
296ce596 KB |
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 | # | |
565cd2c8 KB |
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 | } |