blob: 0f4d6086e213bf0163fd8f0cb1a680f60ba48ad5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# Get the median of a list of numbers
BEGIN {
self = "med"
stderr = "cat >&2"
}
{ vals[NR] = $1 }
NR > 1 && vals[NR] < vals[NR-1] && !warn++ {
if (!stderr)
stderr = "cat >&2"
printf "%s: Input not sorted!\n", self | stderr
}
END {
# Error out if we read no values at all
if (!NR)
exit(1)
if (NR % 2)
med = vals[(NR+1)/2]
else
med = (vals[NR/2] + vals[NR/2+1]) / 2
print med
if (stderr)
close(stderr)
if (warn)
exit(1)
}
|