教程集 www.jiaochengji.com
教程集 >  脚本编程  >  shell  >  正文 截取每小时随机的100条日志的shell脚本

截取每小时随机的100条日志的shell脚本

发布时间:2014-08-19   编辑:jiaochengji.com
截取每小时随机的100条日志

要求:取出一天9:00~21:00每小时的随机100条日志。

用/var/log/messages举例。

复制代码 代码如下:

#!/usr/bin/bash
#取出一天9:00~21:00每小时的随机100条日志。用/var/log/messages举例。
#日志文件是一天内的日志,如果日志文件中包含多天的日志,还需进行一些修改!否则是会有些错误!

LOGFILE="/var/log/messages"
CURDIR=`pwd`
DATE=`date '+%Y_%m_%d'`
SAVEFILE="$CURDIR/day_random_log.$DATE"

seek_date(){
 startline=`awk -F'[ :]' -v line=$1 '$3 == line {print NR;exit}' $LOGFILE`
 endline=`awk -F'[ :]' -v line=$1 '$3 == line {endline=NR}END{print endline}' $LOGFILE`
}

exec 5>&1
exec > $SAVEFILE

for i in `seq 9 21`
do
 seek_date $i
 awk -v startnum=$startline -v endnum=$endline -f $CURDIR/hour_log.awk $LOGFILE
done

exec 1>&5
exec 5>&-

复制代码 代码如下:

#!/usr/bin/awk
#随机抽出文本中的100条日志
BEGIN{
 delete per_hour_log
 line=0
}

NR >= startnum && NR <= endnum{
 line++
 per_hour_log[line]=$0
}

END{
 srand()
 if (line < 100)
 for ( i in per_hour_log)
  print per_hour_log[i]
 else
 {sum=0
 while (sum <= 99){
 linenum=int ( line * rand() )+1
 if ( linenum in per_hour_log ) {
 print per_hour_log[linenum]
 delete per_hour_log[linenum]
 sum++
 }
 }
 }
}

您可能感兴趣的文章:
截取每小时随机的100条日志的shell脚本
python脚本如何测试手机
shell编程技巧小结(三)
golang 日志分析_每日一库之 logrus 日志使用教程
搜索引擎蜘蛛爬行统计分析
自动检测多台主机的网络连通性的shell脚本
logrotate结合cron管理linux日志
DB2实验教程:数据库恢复
linux日志管理高级进阶-实例详解syslog
使用日志保护Linux的安全

[关闭]
~ ~