Il file data.txt
contiene quanto segue:Script per il calcolo della media di una lista di numeri in un file di dati
1.00 1.23 54.4 213.2 3.4
L'output degli script si suppone siano:
ave: 54.646
Alcune semplici gli script sono preferiti
Il file data.txt
contiene quanto segue:Script per il calcolo della media di una lista di numeri in un file di dati
1.00 1.23 54.4 213.2 3.4
L'output degli script si suppone siano:
ave: 54.646
Alcune semplici gli script sono preferiti
Ecco un metodo:
$ awk '{s+=$1}END{print "ave:",s/NR}' RS=" " file
ave: 54.646
Questo produrrà una divisione per errore zero su un file vuoto. Hai bisogno di qualcosa come "awk" {s + = $ 1} END {print "ave:", (NR? S/NR: "NaN")} 'RS = "" file' –
perl -lane '$a+=$_ for(@F);print "ave: ".$a/scalar(@F)' file
se si dispone di più linee e avete solo bisogno di un singolo media:
perl -lane '$a+=$_ for(@F);$f+=scalar(@F);END{print "ave: ".$a/$f}' file
Utilizzando jq
:
$ seq 10|jq -s 'add/length'
5.5
-s
(--slurp
) legge le righe di input in una matrice.
O nel caso del PO:
tr \ \\n<file|jq -s 'add/length'|sed 's/^/ave: /'
cosa succede se si dispone di più linee? – Vijay
awk '{s + = $ 1} END {print "ave:", s/NR}' RS = "\ n" file #se hai un record per riga –
il separatore di record predefinito (RS) è \ n 't necessario specificare RS = "\ n" se si dispone di più righe. 'awk '{s + = $ 1} END {stampa" ave: ", s/NR}' file' –