En utilisant tous les outils que vous vous attendez à trouver sur un système nix (en fait, si vous voulez, msdos est aussi bien), quel est le moyen le plus simple/le plus rapide de calculer la moyenne d'un ensemble de nombres? les un par ligne dans un flux ou un fichier?Quel est le moyen le plus rapide d'obtenir la moyenne d'un ensemble de nombres à partir de la ligne de commande?
Répondre
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;
Caveat Emptor: Ma syntaxe est peut-être un peu floue.
perl -e 'while (<>) { $sum += $_; $count++ } print $sum/$count, "\n"';
En utilisant Num-Utils pour UNIX:
average 1 2 3 4 5 6 7 8 9
awk ' { n += $1 }; END { print n/NR }'
Ce accumule la somme en n
, divise par le nombre d'éléments (NR
= Nombre d'enregistrements).
Fonctionne pour les entiers ou les réels.
Nice sur le tour de NR, ne savais pas quelle réponse awk accepter, donc j'ai fait machine arrière et est allé pour celui avec le plus de votes! – Anthony
En Powershell, il serait
get-content .\meanNumbers.txt | measure-object -average
Bien sûr, c'est la syntaxe verbeux. Si vous avez tapé à l'aide d'alias,
gc .\meanNumbers.txt | measure-object -a
aide "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
Spécifiez une option pour voir les statistiques individuelles:
$ st numbers.txt --mean
5.5
(DISCLAIMER: J'ai écrit ce outil :))
Rubis un liner
cat numbers.txt | ruby -ne 'BEGIN{$sum=0}; $sum=$sum+$_.to_f; END{puts $sum/$.}'
Intéressant. J'ai installé ceci sur Ubuntu et j'ai dû spécifier les nombres sur stdin, pas comme arguments. – Glyph