如何计算成功查询的百分比

如何计算成功查询的百分比

我正在尝试计算 apache 日志中成功查询的百分比是多少。我有两个命令:

cat access_log|cut -d' ' -f10|grep "2.."|wc -l

cat access_log|cut -d' ' -f10|wc -l

他们返回给我成功查询的数量和查询总数。我想计算使用 bash 成功请求的百分比是多少,如果可能的话 - 它应该是 1 行脚本。它假设只输出 % 数字,例如 - 50 或 12,而没有任何附加信息。

我尝试将 bc 与它一起使用,但由于缺乏知识而失败。有人可以帮助我吗?

答案1

尝试这个:

echo $(( 100 * $( cut -d' ' -f10 access_log|grep "2.."|wc -l) / $(cut -d' ' -f10 access_log|wc -l) ))

Bash 只能处理整数。

答案2

使用awk并且仅迭代日志文件一次:

awk '{if ((199 < $9) && ($9 < 300)) {SUMOK++} else {OTHER++}} END { printf "%d\n", ((SUMOK/NR)*100)}' access_log

答案3

你可以试试这个。将 $9 替换为状态代码的正确字段号。

awk '{if ($9 == 200)  no_of_200+=1 } END{ perc=(no_of_200/NR)*100; print perc}' access.log

答案4

sed -ne'\|^\([^ ]*  *\)\{9\}2..|=;$=;$s|.*|2ksmzlm/p|'|dc

...作品...

例如:

printf %s\\n 1 2 3 4 5 6 7 8 9 10 |
sed -ne'/1/=;$=;$s|.*|2ksmzlm/p|p'|dc

.20

...显示与 20% 的输入行sed匹配的模式。1

相关内容