Was ist der schnellste Weg, den Mittelwert einer Reihe von Zahlen von der Kommandozeile zu bekommen?

StackOverflow https://stackoverflow.com/questions/214363

Frage

irgendwelche Werkzeuge zu verwenden, die Sie auf einem nix System zu finden erwarten würden (in der Tat, wenn Sie wollen, msdos ist auch zu fein), was ist der einfachste / schnellste Weg, den Mittelwert einer Reihe von Zahlen zu berechnen, Sie unter der Annahme, haben sie eine pro Zeile in einem Stream oder einer Datei?

War es hilfreich?

Lösung

Awk

awk '{total += $1; count++ } END {print total/count}'

Andere Tipps

awk ' { n += $1 }; END { print n / NR }'

Dieses sammelt sich die Summe in n, teilt dann durch die Anzahl der Elemente (NR = Anzahl der Datensätze).

Werke für ganze Zahlen oder reelle Zahlen.

Mit Num-utils für UNIX:

average 1 2 3 4 5 6 7 8 9
perl -e 'while (<>) { $sum += $_; $count++ } print $sum / $count, "\n"';

In Powershell, es wäre

get-content .\meanNumbers.txt | measure-object -average

Natürlich, das ist die ausführliche Syntax. Wenn Sie es mit Aliasnamen eingegeben hat,

gc .\meanNumbers.txt | measure-object -a

Mit "st" ( https://github.com/nferraz/st ):

$ st numbers.txt
N      min   max    sum    mean  sd
10.00  1.00  10.00  55.00  5.50  3.03

eine Option angeben individuelle Statistiken, um zu sehen:

$ st numbers.txt --mean
5.5

(HAFTUNGSAUSSCHLUSS: Ich schrieb dieses Werkzeug))

Perl.

@a = <STDIN>;

for($i = 0; $i < #@a; $i++)
{
   $sum += $a[i];
}

print $a[i]/#@a;

Gewährleistungsausschluß. Meine Syntax kann ein wenig whiffly sein

Ruby-Motto

cat numbers.txt | ruby -ne 'BEGIN{$sum=0}; $sum=$sum+$_.to_f; END{puts $sum/$.}'

Quelle

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top