我知道有很多不同的线程已经是这样的,但我找不到任何东西似乎能够很好地解释我正在尝试做的事情。
基本上我想要一个shell脚本,它只是逐行浏览文本文件,并搜索单词“Error”或“Exception”。每当遇到这些单词时,它会记录行号,以便稍后我可以在带有问题行的电子邮件中关闭文本文件。
我已经看到很多东西解释了如何逐行循环文本文件,但我不明白我如何在该行上运行正则表达式,因为我不确定如何使用带有shell脚本的正则表达式以及每行存储的变量...
如果有人能为我澄清这些事情,我会非常感激。
答案 0 :(得分:0)
您需要查看使用grep命令。有了它,你可以搜索一个特定的字符串,输出行号和行本身,并做更多。
以下是指向网站的链接,其中包含使用命令的实际示例:http://www.thegeekstuff.com/2009/03/15-practical-unix-grep-command-examples/
文章中的第15点可能对您特别感兴趣。
答案 1 :(得分:0)
有许多工具可以自动循环文件。我建议一个简单的解决方案,如:
grep -inE 'error|exception' logfile > /tmp/logSearch.$$
if [[ -s /tmp/logSearch.$$ ]] ;then
mailx -s "errors in Log" < /tmp/logSearch.$$
fi
/bin/rm /tmp/logSearch.$$
使用man grep
了解我提供的选项。
来自`man bash
-s file
True if file exists and has a size greater than zero.
我希望这会有所帮助。