摘要:有没有办法比使用更有效地从文件中获取唯一行和出现次数sort | uniq -c | sort -n
?
详细信息:在进行日志分析时,我经常使用管道来sort | uniq -c | sort -n
了解哪些日志条目显示最多/最少等的总体趋势。这在大多数情况下都有效 - 除非我正在处理一个非常大的日志文件,最终大量重复(在这种情况下sort | uniq -c
最终需要很长时间)。
示例:我现在面临的具体情况是从“未参数化”的 mysql bin 日志中获取趋势,以找出运行次数最多的查询。对于一个包含一百万个条目的文件,我通过 grep/sed 组合来删除参数 - 产生大约 150 条独特的行 - 我花费了大约 3 秒的 grepping 和 sedding,以及大约 15 秒的排序/uniq'ing。
目前,我已经解决了一个简单的 c++ 程序,该程序维护 < line, count > 的映射 - 它在不到一秒的时间内完成了这项工作 - 但我想知道现有的实用程序是否已经存在。