Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 带正则表达式的单个Grep或多个简单Grep_Regex_Logging_Grep - Fatal编程技术网

Regex 带正则表达式的单个Grep或多个简单Grep

Regex 带正则表达式的单个Grep或多个简单Grep,regex,logging,grep,Regex,Logging,Grep,我将与Grep一起研究一个非常大的数据集。相当多的日志。我不确定是否最好使用一些有时非常复杂的正则表达式对其进行grep处理,或者尝试进行一些简单的grep调用,每次都返回一个越来越小的数据集。我不是最好的正则表达式,但我将能够存储在日志搜索工具中我需要的正则表达式,我只是在寻找哪种方法可能是最好的 编辑: 很抱歉,我忘了添加那个信息,这是我上一篇关于另一个grep问题的帖子。这些文件都是日志,它们可能大也可能小到目前为止,我测试的是1.9gb,所以我认为这是一个相当不错的大小,问题是日志开始变

我将与Grep一起研究一个非常大的数据集。相当多的日志。我不确定是否最好使用一些有时非常复杂的正则表达式对其进行grep处理,或者尝试进行一些简单的grep调用,每次都返回一个越来越小的数据集。我不是最好的正则表达式,但我将能够存储在日志搜索工具中我需要的正则表达式,我只是在寻找哪种方法可能是最好的

编辑:


很抱歉,我忘了添加那个信息,这是我上一篇关于另一个grep问题的帖子。这些文件都是日志,它们可能大也可能小到目前为止,我测试的是1.9gb,所以我认为这是一个相当不错的大小,问题是日志开始变小,然后它们会增长,日志会在某个点上漫游,比如说每天,但是,如果我像我的Apache访问日志那样做,我会对主页加载的频率进行grep,或者对页面加载时间进行grep,这样我就可以得出一个平均值

由于您的数据集非常大,最好只使用正确的正则表达式调用一次
grep
。这将避免过多的IO开销。

与其使用“疯狂的正则表达式”,不如对正在查找的内容构建一个哈希,然后在查找哈希中的元素后在大型数据集中循环。我会使用Perl、Python或Ruby,而不是grep

编辑:


或者,您可以设置一个模式列表,并为该模式列表设置grep。这比使用“疯狂正则表达式”要好。您可以尝试
grep-f patterns.txt datafile.txt

请更具体一些。日志文件有多大?你能告诉我们你在找什么吗?就目前情况而言,这个问题是无法回答的。@TimPietzcker我已经更新了这个问题,使之更具说服力ansiwerable@StephaneRouberolk假设我做了第一个grep后,我在内存中保留了一个返回列表,所以后续grep是在memory中完成的,而不是从磁盘上完成的。我在控制面板后面使用Ruby作为编程语言,我之所以使用grep,是因为它是一种搜索文本文件的超快速方法。@WojonsTech:如果你搜索的文件很大,你的grep方法会非常慢。按照今天的标准,2gb并不是特别大。我知道,按照今天的标准,2gb并不是很大,对于这种大小的东西,你推荐的是比grep更大的。我计划在一些信息上建立一个散列,它几乎会变成一个sudo数据库,但我也打算使用grep检查我的散列/索引。@WojonsTech:使用grep搜索散列?为什么?假设你已经建立了一个搜索短语的散列,你可以这样做:
print,除非$phrases{$\code}
我的意思是grep散列,如中所示,我会将散列保存到文件系统供以后使用,我可以grep,这就是我的意思,有一个索引。