Используя любые инструменты, которые вы ожидаете найти в системе nix (на самом деле, если вы хотите, msdos тоже отлично), что является самым простым/быстрым способом вычисления среднего числа чисел, предполагая, что вы иметь их по одной в строке в потоке или файле?
Какой самый быстрый способ получить среднее из набора чисел из командной строки?
Ответ 1
Awk
awk '{total += $1; count++ } END {print total/count}'
Ответ 2
awk ' { n += $1 }; END { print n / NR }'
Это скопирует сумму в n
, затем делит на количество элементов (NR
= Число записей).
Работает для целых чисел или реалов.
Ответ 3
Используя Num-Utils для UNIX:
average 1 2 3 4 5 6 7 8 9
Ответ 4
perl -e 'while (<>) { $sum += $_; $count++ } print $sum / $count, "\n"';
Ответ 5
В Powershell это будет
get-content .\meanNumbers.txt | measure-object -average
Конечно, этот подробный синтаксис. Если вы набрали его с помощью псевдонимов,
gc .\meanNumbers.txt | measure-object -a
Ответ 6
Использование "st" (https://github.com/nferraz/st):
$ st numbers.txt
N min max sum mean sd
10.00 1.00 10.00 55.00 5.50 3.03
Укажите опцию, чтобы увидеть отдельные статистические данные:
$ st numbers.txt --mean
5.5
(ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я написал этот инструмент:))
Ответ 7
Perl.
@a = <STDIN>;
for($i = 0; $i < #@a; $i++)
{
$sum += $a[i];
}
print $a[i]/#@a;
Caveat Emptor: Мой синтаксис может быть немного плавным.