Shell应用:统计指定格式超过n秒的数据


该脚本的应用场景是数据分析,一般作线上日志分析的人员需要观察线上数据的变化,如:

1.访问数据库的响应大于1000毫秒的sql

2.apache cookielog响应大于多少毫秒的数据

数据格式:

[html]
  1. 2010-12-14 00:01:26,427 FATAL FUNCTION_TIME - wmmad.alloffer.get 15511ms  
  2. 2010-12-14 00:01:33,164 FATAL FUNCTION_TIME - wmmad.alloffer.get 14213ms  
  3. 2010-12-14 00:02:31,021 FATAL FUNCTION_TIME - wmmad.alloffer.get 14126ms  
  4. 2010-12-14 00:05:08,160 FATAL FUNCTION_TIME - wmmad.alloffer.get 15295ms  
  5. 2010-12-14 00:24:00,372 ERROR FUNCTION_TIME - wmmad.offer.repost 406ms  

脚本:

[plain]
  1. #/bin/bash  
  2.   
  3. # author: madding.lip  
  4. # date 2010.12.14  
  5. # 统计超n毫秒的数据量  
  6.   
  7. ERROR_USAGE=1  
  8.   
  9. if [ $# != 2 ]; then  
  10.     echo "Usage: $0 file times";  
  11.     exit $ERROR_USAGE  
  12. fi  
  13.   
  14. myfile=$1  
  15. mytime=$2  
  16.   
  17.   
  18. all=0  
  19. count=0;  
  20.   
  21. data=`cat $myfile | awk '{print $7}' | sed 's/ms//g'`;  
  22.   
  23. for i in $data ;  
  24. do   
  25.     all=$(( $all + 1 ));  
  26.     if test $(( $mytime < $i )) -eq 1 ;then  
  27. #        echo $i; sleep 1;  
  28.         count=$(( $count + 1 ));   
  29.     fi  
  30. done;  
  31.   
  32. echo "response time over ${mytime}ms: "$count" times"  
  33. echo "all count: "$all" times"  

具体根据数据格式作调整即可。

相关内容