Tengo una serie de greps, awks y seds que producen una lista de números, uno en cada línea. Algo como esto:
1.13
3.59
1.23
¿Cómo puedo canalizar esto a algo que produzca el promedio, máximo y mínimo?
linux
bash
command-line-interface
JavaRocky
fuente
fuente
Respuestas:
Como ya estás usando awk
fuente
awk
patrón anterior en/usr/local/bin/stats
o tal, y luego lo usaría comoblabla | stats
.Este programa me parece útil para generar estadísticas en listas de números en la línea de comando: http://web.cs.wpi.edu/~claypool/misc/stats/stats.html
fuente
También hay simple-r, que puede hacer casi todo lo que R puede, pero con menos pulsaciones de teclas:
https://code.google.com/p/simple-r/
Para calcular el promedio, máximo y mínimo, uno tendría que escribir uno de:
fuente
Con una punta del sombrero para @DerfK:
perl -lane '$n=$F[0]; if(not defined $min){$min=$max=$n}; if($n>$max){$max=$n}; if($n<$min){$min=$n}; $total+=$n; $count+=1; END{print $total/$count." $max $min"}'
$F[0]
es el valor en el primer (0'th) campo de cada líneaSi sus datos de entrada están separados por comas, agregue el
-F,
modificador antes-lane
fuente