有没有一种简单的方法可以用 bash 计算分位数?
假设我有一个来自 Web 服务器的日志文件,其中包含每个请求的响应时间:
_1st_request 1334
_2nd_request 345
_3rd_request 244
_4th_request 648
......... etc
是否有一种使用 bash 脚本来查找最高十分位的简单方法(10-分位数)?换句话说,要回答这个问题:如果我排除最慢的 10% 请求,那么最慢的请求有多慢?
Lets say I have a log file from a web server with response times per request:
_1st_request 1334
_2nd_request 345
_3rd_request 244
_4th_request 648
......... etc
Is there an easy way with bash scripting to find the top decile (10-quantile)? In other words to answer the question: How slow was the slowest request if I exclude the slowest 10% of requests?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
用 Perl 来完成整个事情确实会更优雅。如果要使用临时文件,可以使用 wc + head/tail 从已排序的数字列表中选择分位数。
It would indeed be more elegant to do the whole thing in perl. If you want to use a temporary file, you can use wc + head/tail to select the quantile from the sorted list of numbers.
我可能会按请求字段对行数进行数字排序,并获取距末尾 10% 的行。
希望这就是您正在寻找的。
I would probably sort numerically by the request field count the lines and grab the line that's 10% from the end.
Hope that's what you were looking for.