Как лучше всего это сделать? Это текстовый файл размером 250 ГБ, по 1 слову в строке.
Вход:
123
123
123
456
456
874
875
875
8923
8932
8923
Требуемый результат:
123
456
874
875
8923
8932
Мне нужно получить 1 копию каждой дублированной строки. Я НЕ ХОЧУ, если есть 2 ОДИНАКОВЫХ СТРОКИ, УДАЛИТЕ ОБЕ, просто удалите 1, всегда сохраняя 1 уникальную строку.
Что я делаю сейчас:
$ cat final.txt | sort | uniq > finalnoduplicates.txt
На скринах это работает? Я не знаю, потому что когда я проверяю размер выходного файла, он равен 0:
123user@instance-1:~$ ls -l
total 243898460
-rw-rw-r-- 1 123user 249751990933 Sep 3 13:59 final.txt
-rw-rw-r-- 1 123user 0 Sep 3 14:26 finalnoduplicates.txt
123user@instance-1:~$
Но когда я проверяю значение процессора htop
на экране, на котором выполняется эта команда, оно составляет 100%.
Я делаю что-то неправильно?
cat
, так какsort
вполне способен читать файлы самостоятельно. Я также предлагаю вам использовать опцию-u
, чтобы исключитьuniq
. - person Hasturkun   schedule 03.09.2018sort
закончит сортировку, и в него еще ничего не выведено. Сортировка такого количества данных занимает некоторое время. И да, не используйтеcat
иuniq
. В этом нет необходимости; это должно быть сделано с помощью одной программы. А так как ваш файл выглядит полностью числовым, возможно, скажитеsort
, чтобы он сортировал файл численно:sort -o results.txt -nu file.txt
или тому подобное. - person Shawn   schedule 03.09.2018