Хоча ваш оригінальний файл містить рядки, які закінчуються \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
перед кожною командою.