Quel est le moyen le plus rapide d'obtenir la moyenne d'un ensemble de nombres à partir de la ligne de commande?

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

Question

En utilisant les outils que vous espérez trouver sur un système nix (en fait, si vous le souhaitez, msdos convient également), quel est le moyen le plus simple et le plus rapide de calculer la moyenne d'un ensemble de nombres, en supposant en avez-vous une par ligne dans un flux ou un fichier?

Était-ce utile?

La solution

Awk

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

Autres conseils

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

Ceci accumule la somme dans n , puis divise par le nombre d'éléments ( NR = Nombre d'enregistrements).

Fonctionne pour les entiers ou les réels.

Utilisation de Num-Utils pour UNIX:

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

À Powershell, ce serait

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

Bien sûr, c'est la syntaxe détaillée. Si vous l'avez tapé à l'aide d'alias,

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

Utilisation de & st; 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 afficher les statistiques individuelles:

$ st numbers.txt --mean
5.5

(CLAUSE DE NON-RESPONSABILITÉ: j'ai écrit cet outil:))

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.

Ruby one liner

cat numbers.txt | ruby -ne 'BEGIN{$sum=0}; $sum=$sum+

Ruby one liner

<*>

source

.to_f; END{puts $sum/$.}'

source

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top