使用bash,我如何从数字列表中找出平均值,最大值和最小值?

我有一个系列pipe道greps,awks和seds产生一个数字列表,每行一个。 像这样的东西:

1.13 3.59 1.23 

我怎么可以pipe这个东西,将输出的平均值,最大值和最小值?

既然你已经在使用awk了

 blahblahblah | awk '{if(min==""){min=max=$1}; if($1>max) {max=$1}; if($1<min) {min=$1}; total+=$1; count+=1} END {print total/count, max, min}' 

我发现这个程序对于在命令行中生成数字列表的统计信息很有用: http : //web.cs.wpi.edu/~claypool/misc/stats/stats.html

还有简单的r,它几乎可以做任何R的事情,但是用更less的击键:

https://code.google.com/p/simple-r/

要计算平均值,最大值和最小值,必须input以下值之一:

 r summary file.txt r summary - < file.txt cat file.txt | r summary - 

用@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]是每行的第一个(第0)字段的值

如果input数据是逗号分隔的,则在-lane之前添加-F,修饰符