如何对一个非常大的日志文件进行排序,该文件太大而无法加载到主内存中?

时间:2017-01-17 16:32:11

标签: performance data-structures

鉴于我有一个非常大的日志文件,足够大,无法加载到我的主内存中,我想以某种方式对其进行排序,最推荐的排序技术和算法是什么?

3 个答案:

答案 0 :(得分:2)

如果你有GNU sort,请使用它。它知道如何处理大文件。有关详细信息,请参阅Unix SE上How to sort big files的答案。您当然需要足够的可用磁盘空间。

答案 1 :(得分:2)

如果您正在寻找算法,可以应用merge sort

基本上,您将数据拆分为较小的块并对每个块进行排序。然后你拿两个排序的块并合并它们(这可以以流式方式完成,只需取两个块的最小值并递增)m这会产生更大的块。继续这样做,直到你合并了所有的块。

答案 2 :(得分:-1)

这取决于操作系统。如果在Linux / Unix上,您可以使用sed命令打印特定行

sed -n -e 120p /var/log/syslog

将打印syslog文件的第120行。你也可以使用头

head -n 15 /var/log/syslog

哪个会打印syslog文件的前15行。还有grep,tail等用于查看大文件的部分。关于这些以及更多内容的更多细节:

http://www.thegeekstuff.com/2009/08/10-awesome-examples-for-viewing-huge-log-files-in-unix

对于Windows,有Large Text File Viewer