Enquanto seu arquivo original possui linhas que terminam com \n
, seu arquivo classificado possui \r\n
. A adição do \r
é o que muda o tamanho.
Para ilustrar, eis o que acontece quando executo seu comando no meu sistema 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
Como você pode ver, o arquivo desduplicado classificado é algumas linhas mais curto e, consequentemente, alguns bytes menor. Seu arquivo, no entanto, é diferente:
$ wc -l sorted-file.linux.txt sorted-file.txt
271576 sorted-file.linux.txt
271576 sorted-file.txt
Os dois arquivos têm exatamente o mesmo número de linhas, mas:
$ 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
O sorted-file.txt
que baixei do seu link é maior. Se agora examinarmos a primeira linha, podemos ver o extra \r
:
$ head -n1 sorted-file.txt | od -c
0000000 a \r \n
0000003
Que não estão presentes no que eu criei no Linux:
$ head -n1 sorted-file.linux.txt | od -c
0000000 a \n
0000002
Se agora removermos o \r
arquivo do seu arquivo:
$ tr -d '\r' < sorted-file.txt > new-sorted-file.txt
Obtemos o resultado esperado, um arquivo menor que o original, exatamente como o que eu criei no meu sistema:
$ 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
finais de linha, enquanto o arquivo de entrada possui\n
finais de linha. Talvez você deva definir seu código de idioma de maneira diferente. TenteLC_ALL=C
na frente de cada comando.