Tengo un archivo de texto de 2958616 bytes. Cuando ejecuto sort < file.txt | uniq > sorted-file.txt, obtengo un archivo de texto de 3213965 bytes. ¿Por qué mi archivo de texto ordenado es más grande?
Puede descargar los archivos de texto aquí .
text-processing
wb9688
fuente
fuente

\r\nterminaciones de línea, mientras que el archivo de entrada tiene\nterminaciones de línea. Tal vez debería configurar su configuración regional de manera diferente. IntentaLC_ALL=Cdelante de cada comando.locale? ¿Estás seguro de que no creaste el archivo en otro sistema?sed '/^[a-z]*$/d' < file.txt | wc -lme dio 305 líneas.â ê î ñ ô ö öö ûaquellos que no están en el conjunto ASCII.Respuestas:
Mientras que su archivo original tiene líneas que terminan con
\n, su archivo ordenado tiene\r\n. La adición de\res lo que cambia el tamaño.Para ilustrar, esto es lo que sucede cuando ejecuto su comando en mi sistema Linux:
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:
Los dos archivos tienen exactamente el mismo número de líneas, pero:
El
sorted-file.txtque descargué de su enlace es más grande. Si ahora examinamos la primera línea, podemos ver el extra\r:Que no están presentes en el que creé en Linux:
Si ahora eliminamos el
\rarchivo de su archivo:Obtenemos el resultado esperado, un archivo que es más pequeño que el original, como el que creé en mi sistema:
fuente
\r\nfinales de línea son cosa de Windows.hexdumplo revela!Su archivo ordenado es más grande porque usa terminaciones de línea de Windows
\r\n(dos bytes) en lugar de terminaciones de línea de Linux\n(un byte).¿Podría ser que estaba ejecutando ese comando anterior en Windows usando herramientas como
cygwineste nuevo subsistema de Linux para Windows 10? ¿O tal vez corriste algo en Wine?fuente