median.awk revision 18579
118579Sfenner/^ *[0-9]/ { 218579Sfenner # print out the median time to each hop along a route. 318579Sfenner tottime = 0; n = 0; 418579Sfenner for (f = 5; f <= NF; ++f) { 518579Sfenner if ($f == "ms") { 618579Sfenner ++n 718579Sfenner time[n] = $(f - 1) 818579Sfenner } 918579Sfenner } 1018579Sfenner if (n > 0) { 1118579Sfenner # insertion sort the times to find the median 1218579Sfenner for (i = 2; i <= n; ++i) { 1318579Sfenner v = time[i]; j = i - 1; 1418579Sfenner while (time[j] > v) { 1518579Sfenner time[j+1] = time[j]; 1618579Sfenner j = j - 1; 1718579Sfenner if (j < 0) 1818579Sfenner break; 1918579Sfenner } 2018579Sfenner time[j+1] = v; 2118579Sfenner } 2218579Sfenner if (n > 1 && (n % 2) == 0) 2318579Sfenner median = (time[n/2] + time[(n/2) + 1]) / 2 2418579Sfenner else 2518579Sfenner median = time[(n+1)/2] 2618579Sfenner 2718579Sfenner print $1, median 2818579Sfenner } 2918579Sfenner} 30