有日志文件中有模式
----- Fri Mar 22 20:11:50 2013
statement 1
statement 2
statement 3
.
.
.
No errors
statement 10
statement 11
statement 12
我需要搜索生成的当前日期和时间日志,并在日志文件中查找模式“No Errors”。我怎样才能做到这一点 ? 小注意:日志文件将包含多个日期日志条目。
我试过
[ `grep -c "No Errors" /usr/apps/logs/errrors.log` eq 1 ]
echo "No error"
问题是它没有回应“No Error”,因为它可能在这里有多个匹配。那我该怎么办 在日志文件中确定某个检查时间和日期后找到一个模式?
谢谢!
答案 0 :(得分:0)
在两个单独的命令中执行此操作。该命令的第一部分将打印任一日期的匹配或字符串“No errors”。第二部分将删除重复的相邻输出行,因此每个日期之间最多只打印一个“无错误”。
grep -ei '[0-9]:[0-9][0-9]:[0-9][0-9] 20[0-9][0-9]' -ei 'No errors' | uniq
您获得的输出将是日期列表,后面是日期后的“无错误”消息,如果在该日期之后以及包含在下一个日期之前的字符串“无错误”中出现任何错误日志文件。
我不确定您的文件是否包含“无错误”或“无错误”,因此请确保我的命令更新为您正在搜索的内容。此外,请确保更改命令,以便它从您正在使用的日志文件接收输入。例如,
cat logfile | grep -ei ......
答案 1 :(得分:0)
您可以使用awk
之类的工具,您可以在其中定义记录分隔符和字段分隔符。我无法测试,因为你没有提供太多的样本输入,但是这样的东西可能会起作用:
awk -v RS='----- ' -v FS='\n' '/No errors/ {print "No errors on " $1}' logfile