2011-11-17 164 views
13

我需要解析Apache日志文件以查找特定的可疑模式(如SQL注入)。Apache grep大日志文件

比如我要找id='%20or%201=1;

我使用grep来检查此模式(及其他)日志文件,因为这些日志是巨大的花费相当长的时间量

这里我的命令:

grep 'id=' Apache.log | egrep "' or|'%20" 

是否有更好或更快的方法或命令我需要使用来使搜索更快?

回答

22

对于初学者,您不需要将您的grep输出输出到egrepegrep提供grep的正则表达式解析的超集,所以你可以这样做:

egrep "id='(or|%20)'" apache.log 

调用egrep是相同的调用grep -E

这可能会让你的表现有所提升。如果您可以查找固定字符串而不是正则表达式,那也可能有所帮助。你可以告诉grep来寻找一个固定的字符串与-F选项:

grep -F "id='%20or" apache.log 

但使用固定的字符串,你失去了很多的灵活性。

+0

让我试试这个 – aki

+0

谢谢它比我的代码少了21分钟 – aki

0

我假设大部分时间都是在从磁盘获取数据时使用的(CPU使用率没有最大化)。那么你不能优化查询。你可以尝试只记录在一个单独的文件有趣的行,虽然....

0

你在寻找grep -E "id=(' or|'%20)" apache.log