2

Я собираюсь отсортировать ДЕЙСТВИТЕЛЬНО БОЛЬШОЙ текстовый файл с разделителями, скажем, 250 МБ (или набор файлов размером более или менее 250 МБ). В нем 37 полей, и мне нужно отсортировать его по 5 полям, например 1-е, 4-е, 5-е, 6-е и 7-е поля. Под Unix / VMS у меня есть хороший вариант сделать это БЫСТРО? Я могу написать программу на языке COBOL.
Сейчас я пытаюсь отсортировать их с помощью приведенной ниже команды, но она уже выполняется долгое время и просто не будет завершена.

Спасибо.

Команда, которую я использовал: time sort -t ',' -o sorted.txt +0 -1 +4 -5 +5 -6 +6 -7 +22 -23 *.DAT_gprscdr_ftpd

2 ответа2

3

Возможно, этот вопрос действительно должен быть на другом SE-сайте, но вот мое мнение по этому вопросу.

1) Разве базовая сортировка, предложенная вами в вашем вопросе, не достаточно быстра? Как быстро это должно быть? Мой 2-летний рабочий стол сортирует 270 МБ файлов доступа Apache за 21 секунду.

2) Если это не достаточно быстро, вы можете попытаться сначала отсортировать каждый файл по отдельности, а затем объединить их с «sort -m»

3) Если не достаточно быстро и у вас есть более одного процессора / ядра, распараллелить (sp?) процесс с GNU Parallel

4) Если по-прежнему недостаточно быстро и доступно больше машин, распараллелите процесс сортировки на нескольких машинах с помощью GNU Parallel

0

Вы можете загрузить данные в базу данных MySQL (команда LOAD) и делать то, что вы хотите

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .