Каков разумный предел масштабируемости для 'sort -u'? (в измерениях «длина строки», «количество строк», «общий размер файла»?)
Что является альтернативой Unix для файлов, превышающих это в измерении «количества строк»? (Конечно, я могу легко реализовать один, но я задавался вопросом, можно ли что-то сделать с помощью нескольких стандартных команд Linux?)
uniq
перед темsort -u
помогает. Кстати, данные ASCII очень сильноLC_ALL=C sort
sort
Ответы:
То,
sort
что вы найдете в Linux, происходит из пакета coreutils и реализует слияние с внешним R-Way . Он разбивает данные на куски, которые он может обрабатывать в памяти, сохраняет их на диске и затем объединяет. Куски выполняются параллельно, если на машине есть процессоры для этого.Таким образом, если существует ограничение, это свободное дисковое пространство, которое
sort
можно использовать для хранения временных файлов, которые он должен объединить, в сочетании с результатом.источник
sort -o file file
)Я не могу говорить о конкретных реализациях поставщика, но
UNIX sort
реализация разбивает большие файлы на более мелкие, сортирует эти файлы и затем объединяет отсортированные меньшие файлы в агрегированный отсортированный вывод.Единственным ограничением является дисковое пространство для меньших файлов, созданных промежуточным способом
sort
, но файлы могут быть перенаправлены в произвольный каталог, установив переменную средыTMPDIR
.источник
man largefile
списокsort
как большой файл осведомлен.sort
? Или какая-нибудь производная от какой-то версии AT & T Unix? Или какая-нибудь Unix-сертифицированная версияsort
(например, GNUsort
на OS / X)?sort
реализаций в отношении многобайтовых символов может различаться, тот факт, чтоsort
используются разделенные промежуточные файлы, является общим для всех реализаций UNIX, основанных на исходном коде. КСТАТИ: версия Solaris является ОСС как «OpenSolaris», см sourceforge.net/p/schillix-on/schillix-on/ci/default/tree/usr/...На основании https://blog.mafr.de/2010/05/23/sorting-large-files/ и /unix//a/88704/9689 :
Обновить:
Из ответов выше мы видим, что
sort
уже делает то, что упомянул фрагмент - т.е. слияние внешнего R-Way . Так ведь работает всего лишь:Должно быть достаточно.
Мои текущие предположения (без проверки кода) об ограничениях:
(Этот ответ помечен как вики сообщества - чувствую себя лучше, чтобы улучшить его! :))
источник
sort
сортирует параллельно по умолчанию (начиная с 2010 года после того, как страница, на которую вы ссылаетесь),--parallel
необходимо уменьшить количество одновременных потоков, вместо того, чтобыsort
определять оптимальный. Сортировка уже делает разбиение и слияние внутри более эффективным способом. Я сомневаюсь, что дополнительное разделение поможет.