0

有日志文件,其中有模式

----- Fri Mar 22 20:11:50 2013
statement 1
statement 2
statement 3
.
.
.
No errors
statement 10
statement 11
statement 12

我需要搜索生成的当前日期和时间日志,并在日志文件中查找模式“无错误”。我怎样才能做到这一点 ?小提示:日志文件将包含多天日志条目。

我试过了

 [ `grep -c "No Errors"  /usr/apps/logs/errrors.log` eq 1 ]
 echo "No error"

问题是它没有回显“无错误”,因为它可能在这里有多个匹配项。那么如何在日志文件中的某些检查时间和日期后找到模式?

谢谢 !

4

2 回答 2

0

在通过管道连接的两个单独的命令中执行此操作。该命令的第一部分将打印日期或字符串“No errors”的匹配项。第二部分将删除重复的相邻输出行,这样每个日期之间最多打印一个“No errors”。

grep -ei '[0-9]:[0-9][0-9]:[0-9][0-9] 20[0-9][0-9]' -ei 'No errors' | uniq

如果在该日期之后和日志文件中包含的下一个日期之前出现任何字符串“No errors”,则您获得的输出将是日期列表,然后是日期之后的消息“No errors” .

我不确定您的文件是否包含“无错误”或“无错误”,因此请确保我的命令已更新为您正在搜索的内容。此外,请确保更改命令,以便它接收来自您正在使用的日志文件的输入。例如,

cat logfile | grep -ei ......
于 2013-03-23T00:28:17.200 回答
0

您可以使用awk可以定义记录分隔符和字段分隔符的工具。我无法测试,因为您没有提供太多样本输入,但这样的事情可能会起作用:

awk -v RS='----- ' -v FS='\n' '/No errors/ {print "No errors on " $1}' logfile
于 2013-03-23T01:01:51.050 回答