我有一个包含一些指定错误的文件。 想要从日志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等)匹配,我希望收到电子邮件.....不要为不在指定错误列表中的错误发送电子邮件。
答案 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