日志核查工具脚本业务逻辑

用户确定线程号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

原文地址:https://www.cnblogs.com/darkmatter/p/3606821.html