Chinaunix首页 | 论坛 | 博客
  • 博客访问: 499090
  • 博文数量: 401
  • 博客积分: 244
  • 博客等级: 入伍新兵
  • 技术积分: 2215
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-04 10:02
文章分类

全部博文(401)

文章存档

2013年(37)

2012年(364)

分类:

2012-09-14 14:56:29

取出一天9:00~21:00每小时的随机100条日志。用/var/log/messages举例
代码具体如下:

点击(此处)折叠或打开

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

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

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

  12. exec 5>&1
  13. exec > $SAVEFILE

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

  19. exec 1>&5
  20. exec 5>&-


  21. #!/usr/bin/awk
  22. #随机抽出文本中的100条日志
  23. BEGIN{
  24.      delete per_hour_log
  25.      line=0
  26. }

  27. NR >= startnum && NR <= endnum{
  28.      line++
  29.      per_hour_log[line]=$0
  30. }

  31. END{
  32.      srand()
  33.      if (line < 100)
  34.          for ( i in per_hour_log)
  35.               print per_hour_log[i]
  36.      else
  37.          {sum=0
  38.          while (sum <= 99){
  39.              linenum=int ( line * rand() )+1
  40.              if ( linenum in per_hour_log ) {
  41.                  print per_hour_log[linenum]
  42.                  delete per_hour_log[linenum]
  43.                  sum++
  44.              }
  45.          }
  46.      }
  47. }

阅读(481) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~