如何将日志过滤为仅两次之间的行?

Gop*_*nan 5 bash

我在 Unix 上工作。

我想从当前日期的指定时间范围内的日志中获取信息。例如,我想要从今天日期 00:00 到 09:00 的日志文件中的数据。

示例日志条目:

13/10/16 14:45:02 <batchspeedchange> <BELLBD.BD77350A.G6987V00> <> FAILED FILE FORMAT VALIDATION - ERROR:-213:rawData cannot contain tokens
Run Code Online (Sandbox Code Playgroud)

如何从这样的日志文件中获取输出?

gle*_*man 7

假设日期看起来像您显示的“HH:MM”,并且假设日期出现在第二个字段中,您可以使用 awk:

awk -v start=00:00 -v stop=09:00 'start <= $2 && $2 < stop' file.log
Run Code Online (Sandbox Code Playgroud)

[rant] 我对日期格式很挑剔,这个很糟糕:“09/10/11”是什么日期?[/咆哮]

无论如何,假设它是“YY/MM/DD”

awk -v date="$(date +%y/%m/%d)" \
    -v start=00:00:00 \
    -v stop=09:00:00 \
    -v search="File format not found" \
'$1 == date && start <= $2 && $2 < stop && $0 ~ search' file.log
Run Code Online (Sandbox Code Playgroud)