我不确定你所说的“一个有一个小数的十进制数”是什么意思(如果你想要的话,我无法将0.1变为.1),你需要确保你的awk版本支持asort(),但这个(今天在
https://www.jdoodle.com/execute-awk-online
,应该是“NU AWK 5.1.1,API 3.1版”,据我所知)应该有帮助:
代码:
BEGIN{
highest=-2.6
lowest=2.6
}{
a[NR]=$0
if($0>highest){highest=$0}
if($0<lowest){lowest=$0}
average=average+$0
}END{
n=asort(a)
if(n%2==1){median=a[(n+1)/2]}else{median=(a[n/2]+a[n/2+1])/2}
printf("lowest=%f, highest=%f, average=%f, median=%1.1f\n",
lowest, highest, average/NR, median)
}
输入(注意——不能有空行。):
-2.5
-1.4
0.1
-0.9
2.4
2.3
2.2
输出:
lowest=-2.500000, highest=2.400000, average=0.314286, median=0.1