要求:取出一天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=`linuxjishu/13830.html target=_blank class=infotextkey>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++
}
}
}
}
您可能感兴趣的文章:
shell截取字符串的例子
有关字符串截取的shell脚本(多个方法)
shell 字符串的处理(截取,连接,匹配,替换,翻转)
shell字符串截取的几种方法
使用awk截取某区域的数据的例子
使用awk截取某时间段内的日志的单行命令
有关shell中字符串截取的方法总结
awk截取某区域数据
使用awk截取日志-抽取条件在下面