我有一个系列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,修饰符