成功したクエリの割合を計算する方法

成功したクエリの割合を計算する方法

Apacheログに成功したクエリの割合を計算しようとしています。 2つのコマンドがあります。

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

...sed入力ラインの20%に一致するパターンを表示します。1

関連情報