Дедупликация строк в большом файле не выполняется с помощью sort и uniq - PullRequest
0 голосов
/ 30 апреля 2019

У меня большой файл, который состоит из одной строки JSON на строку для 1563888 строк.Для дедупликации строк в этом файле я использовал однострочник оболочки sort myfile.json | uniq -u.

. Для файлов меньшего размера этот подход работал, и sort myfile.json | uniq -u | wc -l был больше 0. Из-за размера файла, который теперь выполняется sort myfile.json | uniq -u | wc -l выдает 0 строк, а если я использую head -n500000 myfile.json | sort | uniq -u | wc -l работает.

Есть ли простой способ для bash обрабатывать такие большие файлы?Или есть чистый способ разбить файл на части?Сначала я использовал bash вместо Python, так как это казалось более простым способом быстрой проверки, хотя сейчас я думаю о переносе этой задачи обратно на Python.

1 Ответ

1 голос
/ 30 апреля 2019

Согласно Камилу Цуку, давайте попробуем это решение:

sort -u myfile.json 

Является ли файл действительно JSON?Сортировка файла JSON может привести к сомнительным результатам.Вы также можете попробовать разделить файл, как это было предложено Марком Сетчеллом.Затем вы можете отсортировать каждый разделенный файл и отсортировать результаты.Все сортировки должны выполняться с sort -u.

. Пожалуйста, предоставьте пример из myfile.json, если это действительно файл JSON.Давайте расскажем о ваших результатах, когда вы просто используете sort -u.

...