: ########################################################################## # Shellscript: avg - calculate the average of a column # Version : 0.3 (beta) # Author : Heiner Steven (heiner.steven@odn.de) # Date : 19.09.94 # Category : Text Utilities # SCCS-Id. : $Id: avg,v 1.1.1.1 1999/06/15 19:29:05 heiner Exp $ ########################################################################## # Changes # 22.06.95 hs specify the column as argument (0.2) # 19.05.96 hs Allow multiple files, -f and -t option (0.3) ########################################################################## PN=`basename $0` # program name VER='0.3 (beta)' Col=1 # Column Delim= # Field delimiter Usage () { echo >&2 "$PN - calculate the average, $VER (stv '94) usage: $PN [-f column] [-t delim] [file ...] -f: specify column (default is $Col) -t: field delimiter (default is whitespace)" exit 1 } Msg () { for i do echo "$PN: $i" >&2 done } Fatal () { Msg "$@"; exit 1; } #set -- `getopt hf: "$@"` while [ $# -gt 0 ] do case "$1" in -f) Col="$2"; shift;; -t) Delim="$2"; shift;; --) shift; break;; -h) Usage;; -*) Usage;; *) break;; # First file name esac shift done case "$Col" in *[!0-9]*) Fatal "no column number: $Col";; esac awk ${Delim:+-F "$Delim"} ' (NF >= '$Col' && $'$Col' != "") { Sum += $'$Col'; n++; } END { if ( n ) printf "%g\n", Sum / n; } ' "$@"