Mientras que su archivo original tiene líneas que terminan con \n
, su archivo ordenado tiene \r\n
. La adición de \r
es lo que cambia el tamaño.
Para ilustrar, esto es lo que sucede cuando ejecuto su comando en mi 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 puede ver, el archivo deducido ordenado es unas pocas líneas más cortas y, en consecuencia, unos pocos bytes más pequeños. Su archivo, sin embargo, es diferente:
$ wc -l sorted-file.linux.txt sorted-file.txt
271576 sorted-file.linux.txt
271576 sorted-file.txt
Los dos archivos tienen exactamente el mismo número de líneas, pero:
$ 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
El sorted-file.txt
que descargué de su enlace es más grande. Si ahora examinamos la primera línea, podemos ver el extra \r
:
$ head -n1 sorted-file.txt | od -c
0000000 a \r \n
0000003
Que no están presentes en el que creé en Linux:
$ head -n1 sorted-file.linux.txt | od -c
0000000 a \n
0000002
Si ahora eliminamos el \r
archivo de su archivo:
$ tr -d '\r' < sorted-file.txt > new-sorted-file.txt
Obtenemos el resultado esperado, un archivo que es más pequeño que el original, como el que creé en mi 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
terminaciones de línea, mientras que el archivo de entrada tiene\n
terminaciones de línea. Tal vez debería configurar su configuración regional de manera diferente. IntentaLC_ALL=C
delante de cada comando.