日志核查工具脚本业务逻辑
用户确定线程号qth和时间范围[qst, qet];
读入文本文件;
将有效行标志位vline设为false;
读入第一行数据,判断是否为日志输出;
若是:提取线程号thread_no和时间cur_time,将vline设为true;
否则:
若vline=true,输出该行
否则忽略该行;
若线程号不是qth 忽略该行;
若cur_time<qst忽略该行;
输出本行数据,循环读入下一行文本;
用grep -n定位起始位置,awk先判断时间范围,再判断线程号,当时间超出上限时,直接退出(close),不必读后续行(next)。
echo "Please input thread number:"
read qth
echo "Please input start time:"
read qst
echo "Please input end time:"
read qet
echo $qth
awk 'BEGIN{
isLogLine=0;
qth='"$qth"';
qst='"$qst"';
qet='"$qet"';
}
{
if(substr($3,2,7)=="thread_"){ #检查是否为日志输出列
thread_no=substr($3,9,length($3)-9);
if(thread_no==qth){
print "the thread is in line:"
print NR
}
}
}' logex