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.
Voici une méthode:
$ awk '{s+=$1}END{print "ave:",s/NR}' RS=" " file
ave: 54.646
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:\ /
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