如何从我的日志文件中过滤日志

时间:2017-09-15 21:07:54

标签: shell unix sh

我有一个异常文件Null pointer exception Socket exception Network exception End of file exception. ,其中包含昨天发生的所有异常行。

示例:

filter.txt

我还有过滤文件End of file exception Null pointer exception ,其中包含一些例外关键字,例如

newexception.txt

我想通过过滤filter.txt中提到的那些行来创建一个带有shell脚本的exception.txt文件。 基本上它应该是filter.txt的副本,忽略来自{{1}}的行。

最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

如果您知道filter.txt上有哪些关键字。最简单也许最快的方法是grep,使用-v选项。

grep -v -e 'keyword1' -e 'keyword2' exception.txt

答案 1 :(得分:0)

您可以从过滤器文件中读取所有行,并从中形成正则表达式:

lines=`cat filter.txt`
regex=${lines//$'\n'/|}
egrep -v "$regex" exception.txt

通过将换行符替换为|,这会将过滤行展平为一个字符串,因此您的正则表达式看起来像End of file exception|Null pointer exception。这样,您也可以使用自己形成正则表达式的过滤器关键字,例如so* exception。 注意这需要bash。