J'ai une série de greps, awks et seds canalisés qui produisent une liste de nombres, un sur chaque ligne. Quelque chose comme ça:
1.13
3.59
1.23
Comment puis-je diriger cela vers quelque chose qui produira la moyenne, le max et le min?
linux
bash
command-line-interface
JavaRocky
la source
la source
Réponses:
Puisque vous utilisez déjà awk
la source
awk
modèle ci-dessus dans/usr/local/bin/stats
ou tel, puis l'utiliser commeblabla | stats
.Je trouve ce programme utile pour générer des statistiques sur des listes de nombres sur la ligne de commande: http://web.cs.wpi.edu/~claypool/misc/stats/stats.html
la source
Il y a aussi simple-r, qui peut faire presque tout ce que R peut faire, mais avec moins de touches:
https://code.google.com/p/simple-r/
Pour calculer la moyenne, le max et le min, il faudrait taper l'un de:
la source
Avec un coup de chapeau à @DerfK:
perl -lane '$n=$F[0]; if(not defined $min){$min=$max=$n}; if($n>$max){$max=$n}; if($n<$min){$min=$n}; $total+=$n; $count+=1; END{print $total/$count." $max $min"}'
$F[0]
est la valeur dans le premier (0'ème) champ de chaque ligneSi vos données d'entrée sont séparées par des virgules, ajoutez le
-F,
modificateur avant-lane
la source