Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何获取最后N分钟的日志消息_Bash_Logging_Awk - Fatal编程技术网

Bash 如何获取最后N分钟的日志消息

Bash 如何获取最后N分钟的日志消息,bash,logging,awk,Bash,Logging,Awk,我的日志采用以下格式: [2018-01-22T13:40:22,825][WARN ] message [2018-01-22T13:41:52,830][ERROR ] message [2018-01-22T13:45:27,831][WARN ] message 我需要写一个脚本,将检查是否有任何错误在过去5分钟。从我在网上发现的情况来看,类似这样的方法应该有效: awk -v d1="$(date --date="-5 min" "+%Y-%m-%dT%H:%M:%S")" -v d

我的日志采用以下格式:

[2018-01-22T13:40:22,825][WARN ] message
[2018-01-22T13:41:52,830][ERROR ] message
[2018-01-22T13:45:27,831][WARN ] message
我需要写一个脚本,将检查是否有任何错误在过去5分钟。从我在网上发现的情况来看,类似这样的方法应该有效:

awk -v d1="$(date --date="-5 min" "+%Y-%m-%dT%H:%M:%S")" -v d2="$(date "+%Y-%m-%dT%H:%M:%S")" '$0 > d1 && $0 < d2 || $0 ~ d2' log.txt
awk-v d1=“$(日期--date=“-5分钟”+%Y-%m-%dT%H:%m:%S”)“-v d2=“$(日期”+%Y-%m-%dT%H:%m:%S”)”“$0>d1&$0

但事实并非如此。我认为[可能会碍事?我还可以尝试什么?

Awk
解决方案:

示例
log.txt

[2018-01-22T13:40:22,825][WARN ] message
[2018-01-23T00:38:37,830][ERROR ] message
[2018-01-22T13:45:27,831][WARN ] message


Awk
解决方案:

示例
log.txt

[2018-01-22T13:40:22,825][WARN ] message
[2018-01-23T00:38:37,830][ERROR ] message
[2018-01-22T13:45:27,831][WARN ] message


你说得对,
[
正在碍事

词典比较,
$0>d1
,比较如下内容:

[2018-01-22T13:45:27,831][WARN ] message

[…
总是大于任何以数字开头的字符串,例如
20..

类似地,
$0
——但在这种情况下,条件永远不会满足(
[20..
始终大于
20..
)。这就是您无法获得任何输出的原因

一个快速的“脏”修复方法是简单地格式化
d1
d2
[
开头:

awk -v d1="$(date --date="-5 min" "+[%Y-%m-%dT%H:%M:%S")" -v d2="$(date "+[%Y-%m-%dT%H:%M:%S")" '$0 > d1 && $0 < d2' log
awk-v d1=“$(日期--date=“-5分钟”+[%Y-%m-%dT%H:%m:%S”)“-v d2=“$(日期”+[%Y-%m-%dT%H:%m:%S”)””'$0>d1&$0
你说得对,
[
正在碍事

词典比较,
$0>d1
,比较如下内容:

[2018-01-22T13:45:27,831][WARN ] message

[…
总是大于任何以数字开头的字符串,例如
20..

类似地,
$0
——但在这种情况下,条件永远不会满足(
[20..
始终大于
20..
)。这就是您无法获得任何输出的原因

一个快速的“脏”修复方法是简单地格式化
d1
d2
[
开头:

awk -v d1="$(date --date="-5 min" "+[%Y-%m-%dT%H:%M:%S")" -v d2="$(date "+[%Y-%m-%dT%H:%M:%S")" '$0 > d1 && $0 < d2' log
awk-v d1=“$(日期--date=“-5分钟”+[%Y-%m-%dT%H:%m:%S”)“-v d2=“$(日期”+[%Y-%m-%dT%H:%m:%S”)””'$0>d1&$0
你已经看到这个了吗?@Black.Jack是的,这就是我开始工作的地方。但是我的格式不同,我无法让它工作。你已经看到这个了吗?@Black.Jack是的,这就是我开始工作的地方。但是我的格式不同,我无法让它工作。非常好,谢谢。我已经尝试添加了[但我在+…@tannerwj之前就做了,你也可以在ask I think-just'$0>”[“d1”例如在模式中。效果很好,谢谢。我曾尝试添加[但我在+…@tannerwj之前做过,你也可以在ask I think-just'$0>中连接它。”[“d1'例如在模式中。哇,这比我认为的awk可能的要多。我只是想将其导入grep并查找我一直在关注的错误。我可以修改它,这将有助于清理
这比我认为的awk可能的多-那么你对什么是awk有一个重大误解:-)!哇,这比我用awk想象的要多。我只是想把它导入grep并查找我一直在关注的错误。不过我可以修改它,它将有助于清理
这比我用awk想象的要多。
-那么你对什么是awk有很大的误解:-)!