3

我知道已经有很多不同的线程像这样,但我找不到任何东西似乎可以很好地解释我正在尝试做的事情。

基本上我想要一个shell脚本,它只逐行遍历一个文本文件,并搜索单词“Error”或“Exception”。每当遇到这些单词时,它都会记录行号,以便我以后可以在一封包含问题行的电子邮件中删除文本文件。

我看过很多解释如何逐行遍历文本文件的东西,但我不明白如何在该行上运行正则表达式,因为我不确定如何使用正则表达式使用shell脚本以及每行存储的变量...

如果有人能为我澄清这些事情,我将不胜感激。

4

2 回答 2

0

您需要研究使用 grep 命令。有了它,您可以搜索特定的字符串,输出行号和行本身,并做更多的事情。

这是一个站点的链接,其中包含使用该命令的实际示例: http ://www.thegeekstuff.com/2009/03/15-practical-unix-grep-command-examples/

您可能对文章中的第 15 点特别感兴趣。

于 2012-06-08T14:13:08.090 回答
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. 

我希望这有帮助。

于 2012-06-08T14:18:03.083 回答