逐行扫描文本文件并使用unix shell脚本读取行

时间:2012-06-08 14:01:18

标签: shell unix

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

基本上我想要一个shell脚本,它只是逐行浏览文本文件,并搜索单词“Error”或“Exception”。每当遇到这些单词时,它会记录行号,以便稍后我可以在带有问题行的电子邮件中关闭文本文件。

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

如果有人能为我澄清这些事情,我会非常感激。

2 个答案:

答案 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. 

我希望这会有所帮助。