在bash中,我正在尝试读取日志文件,并仅打印那些时间戳在两个特定时间之间的行。时间格式为hh:mm:ss。例如,我将搜索落在12:52:33到12:59:33之间的行。
我想使用正则表达式,因为我可以在grep函数中使用它。
每个日志行都以some_nr 2014-05-15 21:58:00,000000 rest_of_line开始。
我的解决方案给我了1分钟的余地。 我去掉了ss并使用hh:mm:[0-9]{2}获取所有行。 $2的格式为filename_hh:mm:;例如: "24249_16:05:;24249_16:05:;24249_16:07:;24249_16:07:;24249_16:08:"
我的代码:
我想使用正则表达式,因为我可以在grep函数中使用它。
每个日志行都以some_nr 2014-05-15 21:58:00,000000 rest_of_line开始。
我的解决方案给我了1分钟的余地。 我去掉了ss并使用hh:mm:[0-9]{2}获取所有行。 $2的格式为filename_hh:mm:;例如: "24249_16:05:;24249_16:05:;24249_16:07:;24249_16:07:;24249_16:08:"
我的代码:
B=$2
for line in ${B//;/ } ;
do
TENT=`echo $line | awk '{split($0,numbers,"_"); print numbers[1]}'`"_logs.txt"
TIME=`echo $line | awk '{split($0,numbers,"_"); print numbers[2]}'`"[0-9]{2}"
grep -iE ${TIME} ${TENT} >> ${FILE1}
done
我需要一个在任何时间不是60秒的情况下有15秒余地的解决方案。我希望输入格式为 filename_hh:mm:ss
,并获取 hh:mm:ss +/- 15s 或 filename_hh:mm:ss(1)_hh:mm:ss(2)
之间的行。有时候没有行,因此解决方案应该“识别”是否匹配所输入的时间间隔。
日志文件看起来像这样:
1002143 1002143 2014/15/05 22:09:52.937004 bla
1002130 2014/15/05 22:09:44.786002 bla bla
1001667 2014/15/05 22:09:44.592009 bl a bla
1001667 1001667 2014/15/05 22:09:44.592009 bl a bla