Verwenden Sie alle Tools, die Sie erwarten würden, auf einem Nix-System (in der Tat, wenn Sie möchten, msdos ist auch auch in Ordnung), was ist der einfachste/schnellste Weg, den Mittelwert einer Reihe von Zahlen zu berechnen, vorausgesetzt, Sie haben sie eine pro Zeile in einem Stream oder einer Datei?Was ist der schnellste Weg, um den Mittelwert einer Reihe von Zahlen von der Kommandozeile zu erhalten?
Antwort
Awk
awk '{total += $1; count++ } END {print total/count}'
Perl.
@a = <STDIN>;
for($i = 0; $i < #@a; $i++)
{
$sum += $a[i];
}
print $a[i]/#@a;
Vorbehalt Emptor: Meine Syntax kann ein wenig süchtig sein.
perl -e 'while (<>) { $sum += $_; $count++ } print $sum/$count, "\n"';
Mit Num-Utils für UNIX:
average 1 2 3 4 5 6 7 8 9
awk ' { n += $1 }; END { print n/NR }'
Dies ist die Summe in n
ansammelt, dividiert durch die Anzahl der Elemente (NR
= Anzahl der Datensätze).
Funktioniert für Ganzzahlen oder Realzahlen.
Schön auf den NR-Trick, war nicht sicher, welche awk-Antwort zu akzeptieren, also habe ich ausgerechnet und ging für die mit den meisten Stimmen! – Anthony
In Powershell wäre es
get-content .\meanNumbers.txt | measure-object -average
Natürlich sein, das ist die ausführliche Syntax. Wenn Sie es mit Aliasnamen eingegeben haben,
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 :))
Rubin ein Liner
cat numbers.txt | ruby -ne 'BEGIN{$sum=0}; $sum=$sum+$_.to_f; END{puts $sum/$.}'
Interessant. Ich habe dies auf Ubuntu installiert und musste die Zahlen auf stdin angeben, nicht als Argumente. – Glyph