验证错误列表

时间:2013-11-17 12:03:48

标签: shell sed awk

我有一个包含一些指定错误的文件。 想要从日志grep错误,如果我发现那些指定的错误,那么我只想收到电子邮件。

grep error log
error1
error2
error3
error4
error6
error7

specified error list(of 30 errors) for which i want to receive email
error3
error7
.....
error30

如果错误与指定的错误列表(例如错误3和错误7等)匹配,我希望收到电子邮件.....不要为不在指定错误列表中的错误发送电子邮件。

1 个答案:

答案 0 :(得分:1)

假设您在patterns.txt中有错误模式列表:

error3
error7

您的日志位于名为all.log的文件中。然后,您可以生成一个临时文件,其中包含与指定模式匹配的错误,如果该文件非空,则将其通过电子邮件发送给您自己:

grep -f patterns.txt all.log > /tmp/matches.log
test -s /tmp/matches.log || mailx -s 'interesting errors' you@example.com < /tmp/matches.log

通过将grep的结果存储在变量中,您可以在没有临时文件的情况下执行此操作:

matches=$(grep -f patterns.txt all.log)
test "$matches" && echo "$matches" | mailx -s 'interesting errors' you@example.com