Permalink
Cannot retrieve contributors at this time
#!/usr/bin/awk -f | |
# | |
# awk script to calculate basic statistical info | |
# | |
# Pipe one numerical value per line into the script. | |
# | |
# $> ... STDIN | basicstats.awk | |
# | |
#Typical Output: | |
# | |
# Num of values: 10000 | |
# Mean: 91306 | |
# Median: 2431 | |
# Min: 18 | |
# Max: 301455050 | |
# Range: 301455032 | |
# Std deviation: 3023884 | |
# | |
BEGIN { | |
sum = 0.0 | |
sum2 = 0.0 | |
min = 10e10 | |
max = -min | |
} | |
(NF>0) { | |
sum += $1 | |
sum2 += $1 * $1 | |
N++; | |
if ($1 > max) { | |
max = $1 | |
} | |
if ($1 < min) { | |
min = $1 | |
} | |
arr[NR]=$1 | |
} | |
END{ | |
asort(arr) | |
if (NR%2==1) { | |
median = arr[(NR+1)/2] | |
} | |
else { | |
median = (arr[NR/2]+arr[NR/2+1])/2 | |
} | |
if(N>0) { | |
printf "%14s %'18.2f\n", "Num of values:" ,N | |
printf "%14s %'18.2f\n", "Mean:", sum/N | |
printf "%14s %'18.2f\n", "Median:", median | |
printf "%14s %'18.2f\n", "Min:", min | |
printf "%14s %'18.2f\n", "Max:", max | |
printf "%14s %'18.2f\n", "Range:", max-min | |
printf "%14s %'18.2f\n", "Std deviation:", sqrt((sum2 - sum*sum/N)/N) | |
} | |
else { | |
print "ERROR: No non-null values found" | |
} | |
} |