我正在尝试 grep 在日志文件中查找模式,但我需要日志文件的最后一个小时。tail -n XX 将不起作用。有谁知道这是否可能?某种尾部“在最后一小时从日志文件中写入的行”
如果有任何命令或程序,我很感激。
非常感谢
pa4*_*080 12
假设您的日志具有以下结构:
219.369.42.449 - - [05/Mar/2020:11:05:17 +0200] "log line"
219.369.42.449 - - [05/Mar/2020:11:06:37 +0200] "log line"
219.369.42.449 - - [05/Mar/2020:12:01:14 +0200] "log line"
219.369.42.449 - - [05/Mar/2020:12:07:23 +0200] "log line"
Run Code Online (Sandbox Code Playgroud)
我们可以通过以下方式获取从第一次出现05/Mar/2020:11到$文件末尾的所有行sed:
sed -n '/05\/Mar\/2020:11/,$p' "/path/to/file.log"
Run Code Online (Sandbox Code Playgroud)
该选项-n将抑制 的正常输出sed,但该标志p将打印文件的匹配部分。
请注意,如果没有出现任何符合 的记录05/Mar/2020:11,则sed不会提供任何输出。
我们可以在命令的帮助下自动执行上述操作,date并且eval:
COMMAND="sed -n '/$(LANG=C date --date='1 hour ago' "+%d\/%b\/%Y:%H")/,\$p'"
eval $COMMAND \"/path/to/file.log\"
Run Code Online (Sandbox Code Playgroud)
sed在这种情况下,在表达式中使用双引号和变量不会提供所需的输出。eval。LANG=C( LANG=en_us_88591) 代表获取所需的日期格式,因为例如,在我的情况下,此 envvar 的默认值是bg_BG.UTF-8.您可以根据上面的两行创建一个脚本 - 此类脚本的示例:
modsecurity-whitelist-rule-generator.bash-通过其 unique-id解析ModSecutity 中的事件,然后为 ModSecutity 生成白名单规则。modsec_audit.log