Você pode usar a linguagem de programação R .
Aqui está um script R rápido e sujo:
#! /usr/bin/env Rscript
d<-scan("stdin", quiet=TRUE)
cat(min(d), max(d), median(d), mean(d), sep="\n")
Observe o nome do arquivo "stdin"
em scan
que é especial para ler da entrada padrão (que significa de pipes ou redirecionamentos).
Agora você pode redirecionar seus dados sobre stdin para o script R:
$ cat datafile
1
2
4
$ ./mmmm.r < datafile
1
4
2
2.333333
Também funciona para pontos flutuantes:
$ cat datafile2
1.1
2.2
4.4
$ ./mmmm.r < datafile2
1.1
4.4
2.2
2.566667
Se você não quiser escrever um arquivo de script R, poderá chamar uma linha única (com quebra de linha apenas para facilitar a leitura) na linha de comando usando Rscript
:
$ Rscript -e 'd<-scan("stdin", quiet=TRUE)' \
-e 'cat(min(d), max(d), median(d), mean(d), sep="\n")' < datafile
1
4
2
2.333333
Leia os bons manuais do R em http://cran.r-project.org/manuals.html .
Infelizmente, a referência completa está disponível apenas em PDF. Outra maneira de ler a referência é digitando ?topicname
o prompt de uma sessão R interativa.
Para completar: existe um comando R que gera todos os valores que você deseja e muito mais. Infelizmente, em um formato amigável para humanos, difícil de analisar de forma programática.
> summary(c(1,2,4))
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.000 1.500 2.000 2.333 3.000 4.000