В то время как ваш исходный файл имеет строки, которые заканчиваются \n
, ваш отсортированный файл имеет \r\n
. Дополнение - \r
это то, что меняет размер.
Чтобы проиллюстрировать это, вот что происходит, когда я запускаю вашу команду в моей системе Linux:
$ sort < file.txt | uniq > sorted-file.linux.txt
$ ls -l file.txt sorted-file.linux.txt
-rw-r--r-- 1 terdon terdon 2958616 Jul 10 12:11 file.txt
-rw-r--r-- 1 terdon terdon 2942389 Jul 10 15:15 sorted-file.linux.txt
$ wc -l file.txt sorted-file.linux.txt
273882 file.txt
271576 sorted-file.linux.txt
Как вы можете видеть, отсортированный дедуплицированный файл на несколько строк короче и, следовательно, на несколько байтов меньше. Ваш файл, однако, отличается:
$ wc -l sorted-file.linux.txt sorted-file.txt
271576 sorted-file.linux.txt
271576 sorted-file.txt
Два файла имеют одинаковое количество строк, но:
$ ls -l file.txt sorted-file.linux.txt sorted-file.txt
-rw-r--r-- 1 terdon terdon 2958616 Jul 10 12:11 file.txt
-rw-r--r-- 1 terdon terdon 2942389 Jul 10 15:15 sorted-file.linux.txt
-rw-r--r-- 1 terdon terdon 3213965 Jul 10 12:11 sorted-file.txt
Тот sorted-file.txt
, который я скачал по вашей ссылке, больше. Если мы теперь рассмотрим первую строку, мы можем увидеть дополнительную \r
:
$ head -n1 sorted-file.txt | od -c
0000000 a \r \n
0000003
Которые отсутствуют в том, что я создал в Linux:
$ head -n1 sorted-file.linux.txt | od -c
0000000 a \n
0000002
Если мы сейчас удалим \r
из вашего файла:
$ tr -d '\r' < sorted-file.txt > new-sorted-file.txt
Мы получаем ожидаемый результат, файл, который меньше исходного, точно так же, как тот, который я создал в моей системе:
$ ls -l sorted-file.linux.txt new-sorted-file.txt file.txt
-rw-r--r-- 1 terdon terdon 2958616 Jul 10 12:11 file.txt
-rw-r--r-- 1 terdon terdon 2942389 Jul 10 15:19 new-sorted-file.txt
-rw-r--r-- 1 terdon terdon 2942389 Jul 10 15:15 sorted-file.linux.txt
\r\n
окончания строк, тогда как входной файл имеет\n
окончания строк. Возможно, вы должны установить свой язык по-другому. ПопробуйтеLC_ALL=C
перед каждой командой.