Plik data.txt
zawiera następujące elementy:Skrypty do obliczania średniej z listy numerów w pliku danych
1.00 1.23 54.4 213.2 3.4
Wyjście skrypty mają być:
ave: 54.646
Niektóre proste skrypty są preferowane.
Plik data.txt
zawiera następujące elementy:Skrypty do obliczania średniej z listy numerów w pliku danych
1.00 1.23 54.4 213.2 3.4
Wyjście skrypty mają być:
ave: 54.646
Niektóre proste skrypty są preferowane.
Oto jeden sposób:
$ awk '{s+=$1}END{print "ave:",s/NR}' RS=" " file
ave: 54.646
To spowoduje błąd dzielenia przez zero w pustym pliku. Potrzebujesz czegoś takiego jak 'awk '{s + = $ 1} END {print" ave: ", (NR? S/NR:" NaN ")}' RS =" "plik" –
perl -lane '$a+=$_ for(@F);print "ave: ".$a/scalar(@F)' file
jeśli masz wiele wierszy i wystarczy jeden Średnia:
perl -lane '$a+=$_ for(@F);$f+=scalar(@F);END{print "ave: ".$a/$f}' file
Korzystanie jq
:
$ seq 10|jq -s 'add/length'
5.5
-s
(--slurp
) odczytuje linie wejściowe do tablicy.
albo w przypadku gdy OP:
tr \ \\n<file|jq -s 'add/length'|sed 's/^/ave: /'
co, jeśli masz wiele wierszy? – Vijay
awk '{s + = $ 1} END {print "ave:", s/NR}' RS = "\ n" plik # jeśli masz jeden rekord na linię –
domyślny separator rekordów (RS) to \ n, więc nie 'musisz podać RS = "\ n", jeśli masz wiele linii. 'awk '{s + = $ 1} END {print" ave: ", s/NR}" file' –