bashの持つ分位数を計算するための簡単な方法はありますか?
-
19-09-2019 - |
質問
私はリクエストごとの応答時間とWebサーバからログファイルを考えてみましょう
_1st_request 1334
_2nd_request 345
_3rd_request 244
_4th_request 648
......... etc
トップ十分位(10〜分位のを見つけるためのbashスクリプトで簡単な方法はあります)?私は要求の最も遅い10%を除外した場合、最も遅い要求したどのように遅い。
:?他の言葉で質問に答えます解決
awk '{print $2}' | sort -rn | perl -e '$d=.1;@l=<>;print $l[int($d*$#l)]'
確かにperlで全体のことを行うにはよりエレガントになります。あなたは、一時ファイルを使用する場合は、数字のソートされたリストから、クォンタイルを選択するために、WC +ヘッド/テールを使用することができます。
他のヒント
私はおそらくソート数値的要求フィールドによってラインをカウントし、端から10%だラインをつかむでしょう。
FILE=responseTimes.log
TMPFILE=tmpfile
sort -k 2 -n $FILE > $TMPFILE
LINECOUNT=`wc -l $TMPFILE | sed -e 's/^ *//' -e 's/ .*$//'`
TARGETLINE=echo "$LINECOUNT * 9 / 10" | bc
sed -n "$TARGETLINE{p;q;}" $TMPFILE
あなたが探していたものです。希望ます。
所属していません StackOverflow