هل هناك طريقة سهلة لحساب الكميل مع باش؟
-
19-09-2019 - |
سؤال
دعنا نقول أن لدي ملف سجل من خادم ويب مع أوقات الاستجابة لكل طلب:
_1st_request 1334
_2nd_request 345
_3rd_request 244
_4th_request 648
......... etc
هل هناك طريقة سهلة مع البرمجة النصية باش للعثور على أعلى العشر (10-كيمي) وبعبارة أخرى للإجابة على السؤال: ما مدى بطيء أبطأ طلب إذا كنت أستبعد أبطأ 10٪ من الطلبات؟
المحلول
awk '{print $2}' | sort -rn | perl -e '$d=.1;@l=<>;print $l[int($d*$#l)]'
سيكون بالفعل أكثر أناقة للقيام بأكمله في بيرل. إذا كنت ترغب في استخدام ملف مؤقت، فيمكنك استخدام رأس / ذيل / ذيل 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