2017-01-17 5 views
0

Учитывая, что у меня очень большой файл журнала, достаточно большой, чтобы он не мог быть загружен в мою основную память, и я хотел каким-то образом его отсортировать, какова будет самая рекомендуемая техника сортировки и алгоритм?Как я могу сортировать очень большой файл журнала, слишком большой для загрузки в основную память?

+0

Возможный дубликат [хороший просмотрщик журнала IIS для больших файлов журналов?] (Http://stackoverflow.com/questions/157677/a-good-iis-log-viewer-for-large-log-files) – Mat

+0

Возможный дубликат: http://stackoverflow.com/q/37062366/56778 –

ответ

2

Если у вас есть GNU sort, используйте его. Он знает, как обращаться с большими файлами. Для получения дополнительной информации см. Ответы на How to sort big files на Unix SE. Конечно, вам потребуется достаточное свободное место на диске.

-1

Это зависит от ОС. Если на Linux/Unix, вы можете использовать SED команды, чтобы напечатать определенные строки

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

Какой бы строка 120 из системного журнала файла печати. Вы также можете использовать головку

head -n 15 /var/log/syslog 

Будет распечатываться первые 15 строк файла syslog. Существует также grep, tail и т. Д. Для просмотра частей большого файла. Более подробно здесь на них и больше:

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

Для Windows есть Large Text File Viewer

+0

Как это ответ на вопрос? – pintxo

+0

Понял, что он хотел бы отсортировать его для чтения/поиска предметов. – Joe

2

Если вы ищете алгоритм, вы могли бы применить merge sort.

По существу, вы разбиваете свои данные на более мелкие куски и сортируете каждый кусок. Затем вы берете два сортированных куска и объединяете их (это можно сделать потоковым способом, просто возьмите наименьшее значение двух кусков и приращений). Это приведет к большему фрагменту. Продолжайте делать это, пока вы не объедините все куски.

+0

Обычный слияние не будет выполнять эту работу. Куски становятся больше по каждой итерации, поэтому через некоторый период времени они не могут быть сохранены в памяти. – karastojko

+0

Правильно, вам нужно будет хранить их на диске. При базовом подходе вам нужно вдвое больше места на диске, но если журналы хранятся в файлах с максимальным размером X, тогда вам потребуется не более 2 * X дополнительных дисковых пространств, даже для слияния последних и самых больших 2 кусков. – TilmannZ

Смежные вопросы