У меня очень большой файл данных (255G; 3 192 563 934 строки). К сожалению, у меня только 204 ГБ свободного места на устройстве (и никаких других устройств, которые я могу использовать). Я сделал случайную выборку и обнаружил, что в заданных, скажем, 100 000 строк есть около 10 000 уникальных строк... но файл не отсортирован.
Обычно я бы использовал, скажем:
pv myfile.data | sort | uniq > myfile.data.uniq
и просто дайте ему поработать в течение дня или около того. В данном случае это не сработает, потому что на устройстве недостаточно места для временных файлов.
Я подумал, что мог бы использовать split
, возможно, и выполнять потоковую передачу uniq
, возможно, по 500 тысяч строк за раз в новый файл. Есть ли способ сделать что-то подобное?
Я думал, что смогу сделать что-то вроде
tail -100000 myfile.data | sort | uniq >> myfile.uniq && trunc --magicstuff myfile.data
но я не мог понять, как правильно обрезать файл.
sort -u
, он, вероятно, разумен и будет использовать только ваши предполагаемые 10% временного пространства. - person that other guy   schedule 27.07.2017