我试图从日志文件中提取一些信息,回顾特定时间段(例如过去一小时)。我发现以下 awk 结构有效,将数据捕获为变量:
myvar="$(awk '$0>=from&&$0<=to' from="$(date +%b" "%d" "%H:%M:%S -d -10minute)" to="$(date +%b" "%d" "%H:%M:%S)" /var/log/messages)"
我希望能够从该变量获取某些信息,并用它来创建警报,但我不确定如何做到这一点,是使用 Grep 还是其他东西?
如果有人知道解决方案,并且可以告诉我如何操作,我将非常感激。
这里有更多细节:这只是一个示例。假设我回顾过去一小时的 syslog,使用上面的 awk 结构将所有输出保存为变量。现在,我想解析一些数据作为发送警报电子邮件的基础,例如“Apr 16 12:32:26 satest01 kdump: kexec: returned kdump kernel”中的关键字(或关键短语)“kdump”。我如何从变量中提取该信息?
答案1
当您不想直接从日志文件中 grep 信息时,可以使用
echo "${var}" | grep "kdump"
您还可以使用管道:
awk ...your_script | grep "kdump"
当你想 grep 更多单词时,使用grep -E
awk ...your_script | grep -E "kdump|Diggy|other string"