Qual é a maneira mais rápida de obter a média de um conjunto de números a partir da linha de comando?

StackOverflow https://stackoverflow.com/questions/214363

Pergunta

Usando todas as ferramentas que você esperaria encontrar em um sistema nix (na verdade, se você quiser, msdos também é muito fina), qual é a maneira mais fácil / mais rápido para calcular a média de um conjunto de números, supondo que você tê-los um por linha em um fluxo ou arquivo?

Foi útil?

Solução

Awk

awk '{total += $1; count++ } END {print total/count}'

Outras dicas

awk ' { n += $1 }; END { print n / NR }'

Esta acumula a soma em n, em seguida, divide pelo número de itens (NR = número de registros).

Obras de números inteiros ou reais.

Usando Num-Utils para UNIX:

average 1 2 3 4 5 6 7 8 9
perl -e 'while (<>) { $sum += $_; $count++ } print $sum / $count, "\n"';

Em PowerShell, seria

get-content .\meanNumbers.txt | measure-object -average

É claro, esse é o detalhado sintaxe. Se você digitou-lo usando pseudônimos,

gc .\meanNumbers.txt | measure-object -a

Usando o "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

Especifique uma opção para ver estatísticas individuais:

$ st numbers.txt --mean
5.5

(IMPORTANTE: Eu escrevi esta ferramenta:))

Perl.

@a = <STDIN>;

for($i = 0; $i < #@a; $i++)
{
   $sum += $a[i];
}

print $a[i]/#@a;

advertência Emptor:. Meu sintaxe pode ser um pouco whiffly

Rubi um forro

cat numbers.txt | ruby -ne 'BEGIN{$sum=0}; $sum=$sum+$_.to_f; END{puts $sum/$.}'

fonte

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top