はじめに
Excelなどの表計算ソフトではデフォルトで入っているpercentile
をLinuxで利用すべくスクリプトにしました。
方針としては数値データにて並び替えた上で行数を取得し、headとtailで切り出しています。
環境情報
- Debian GNU/Linux 9
スクリプト
数値にて昇順/降順で並べ替え済みのデータをhoge.logとすると以下のように値を格納していきます。
num=0.05 lognum=`cat hoge.log | wc -l` tileinfo=`echo "$lognum*$num" | bc | cut -d"." -f1` if [ -z "$tileinfo" ]; then tileinfo=0 fi headtile=`echo "$lognum-$tileinfo" | bc ` tailtile=`echo "$headtile-$tileinfo" | bc `
同情報を利用して以下のようにすれば90%タイルでデータを切り出せます。
cat hoge.log | head -n $headtile | tail -n $tailtile
行数情報なので小数点データは切り捨てていますが、その中でbcコマンドの仕様を考慮して値が空になった場合は0を明示的に挿入しています。
終わりに
numの部分を変更することで95%タイルや99%タイルなど、任意の値でログデータを切り出すことが可能です。
また、実際の値が知りたい場合はheadやtailコマンドを使うことで該当行が取り出せます。
以上、ご参考になれば幸いです。