diff options
Diffstat (limited to 'contrib/traceroute/median.awk')
-rw-r--r-- | contrib/traceroute/median.awk | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/contrib/traceroute/median.awk b/contrib/traceroute/median.awk new file mode 100644 index 0000000..5935bad --- /dev/null +++ b/contrib/traceroute/median.awk @@ -0,0 +1,29 @@ +/^ *[0-9]/ { + # print out the median time to each hop along a route. + tottime = 0; n = 0; + for (f = 5; f <= NF; ++f) { + if ($f == "ms") { + ++n + time[n] = $(f - 1) + } + } + if (n > 0) { + # insertion sort the times to find the median + for (i = 2; i <= n; ++i) { + v = time[i]; j = i - 1; + while (time[j] > v) { + time[j+1] = time[j]; + j = j - 1; + if (j < 0) + break; + } + time[j+1] = v; + } + if (n > 1 && (n % 2) == 0) + median = (time[n/2] + time[(n/2) + 1]) / 2 + else + median = time[(n+1)/2] + + print $1, median + } +} |