web-dev-qa-db-fra.com

Scripts pour calculer la moyenne d'une liste de nombres dans un fichier de données

Le fichier data.txt contient les éléments suivants:

1.00 1.23 54.4 213.2 3.4

La sortie des scripts est supposée être:

ave: 54.646

Certains scripts simples sont préférés.

34
JackWM

Voici une méthode:

$ awk '{s+=$1}END{print "ave:",s/NR}' RS=" " file
ave: 54.646
65
Chris Seymour

Une autre option consiste à utiliser jq:

$ seq 100|jq -s add/length
50.5

-s (--Slurp) crée un tableau pour les lignes d'entrée après avoir analysé chaque ligne en JSON, ou en tant que nombre dans ce cas.

Ou dans le cas du PO:

tr \  \\n<file|jq -s add/length|sed s/^/ave:\ /
23
nisetama
Perl -lane '$a+=$_ for(@F);print "ave: ".$a/scalar(@F)' file

si vous avez plusieurs lignes et que vous avez juste besoin d'une seule moyenne:

Perl -lane '$a+=$_ for(@F);$f+=scalar(@F);END{print "ave: ".$a/$f}' file
5
Vijay