gpt4 book ai didi

linux - 列中的最小值、平均值和最大值

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:37 29 4
gpt4 key购买 nike

我有下一个问题,我想要这个输入的两个最小值、一个最大值和平均值:

 Call 1 1.160 ms
Call 2 0.163 ms
Call 3 1.154 ms
Call 4 1.029 ms
Call 5 0.291 ms
Call 6 1.186 ms
Call 7 1.089 ms
Call 8 1.122 ms
Call 9 0.975 ms
Call 10 1.224 ms
Call 11 0.965 ms
Call 12 1.047 ms
Call 13 1.138 ms
Call 14 1.217 ms
Call 15 1.189 ms
Call 16 1.115 ms
Call 17 0.950 ms
Call 18 1.112 ms
Call 19 1.227 ms
Call 20 1.071 ms
Call 21 1.108 ms
Call 22 1.191 ms
Call 23 1.139 ms
Call 24 1.032 ms
Call 25 1.305 ms
Call 26 1.085 ms
Call 27 1.404 ms
Call 28 1.282 ms
Call 29 1.031 ms
Call 30 1.018 ms
Call 31 1.308 ms
Call 32 1.299 ms
Call 33 1.096 ms
Call 34 1.129 ms
Call 35 1.271 ms
Call 36 1.035 ms
Call 37 1.238 ms
Call 38 1.150 ms
Call 39 1.042 ms
Call 40 0.948 ms

我一直在使用这些命令:

 awk 'min=="" || $3 < min {min=$3; minline=$0}; END{ print minline}'

awk '{ if ($3>max) {max=$3; line=$0} } END {print line }'

awk '{s+=$3} END{print "Number of Calls: "NR, "\nAverage: "s/(NR)}'

输出是这样的:

 Minimun: Call 18 0.212 ms
Maximun: Call 27 1.404 ms
Number of Calls: 40
Average: 1.1071

但我需要有 2 个最小值,其中一个如上所示,另一个应该是大于 0.800 的任何数字。我正在尝试这个:

 awk 'min=="0.800" || $3 < min {min=$3; minline=$0}; END{ print minline}'

但是它什么也没显示。拜托,我需要你的帮助来将其放入脚本中。

预先感谢您的帮助

最佳答案

kent$  awk 'BEGIN{min=999}
{a[NR]=$0;if($3<min){min=$3;m[1]=NR;}if($3>max){max=$3;m[2]=NR;}m[3]+=$3;}
END{print "Min:"a[m[1]];
print "Max:"a[m[2]];
print "Number Of Calls:" NR;
print "Avg:"m[3]/NR;
t=max>0.800?a[m[2]]:"None";
print "Any greater than 0.800:"t}' yourFile

输出:

Min:Call 2 0.163 ms
Max:Call 27 1.404 ms
Number Of Calls:40
Avg:1.08837
Any greater than 0.800:Call 27 1.404 ms

注意:对于“任何大于 0.800 的数字”,我只是检查了 Max,如果它 >0.800,则将其打印为魔数(Magic Number)。如果不是,则打印 None。

编辑

OP 评论的变化:

kent$  awk 'BEGIN{min=mag=999}
{a[NR]=$0;if($3<min){min=$3;m[1]=NR;}if($3>max){max=$3;m[2]=NR;}if($3>0.800&&$3<mag){mag=$3;m[4]=NR} m[3]+=$3;}
END{print "Min:"a[m[1]];
print "Max:"a[m[2]];
print "Number Of Calls:" NR;
print "Avg:"m[3]/NR;
print "Any greater than 0.800:"a[m[4]]}' yourFile

输出:

Min:Call 2 0.163 ms
Max:Call 27 1.404 ms
Number Of Calls:40
Avg:1.08837
Any greater than 0.800:Call 40 0.948 ms

关于linux - 列中的最小值、平均值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9176000/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com