Cómo ordenar archivos de texto en Linux usando el comando sort

Linux le proporciona varias utilidades que puede utilizar para procesar archivos de texto. Ya sea que desee eliminar datos duplicados u ordenar el contenido dentro de un archivo, las herramientas de línea de comandos de Linux tienen todo lo que necesita.

Este artículo demostrará el comando de ordenación y cómo puede usarlo para ordenar el contenido dentro de un archivo de texto y organizarlo en consecuencia.

¿Qué es el comando sort?

Como se mencionó anteriormente, el comando de clasificación ayuda al usuario a organizar el contenido de un archivo de texto en un orden particular. Hay varias opciones disponibles que le permiten ordenar el archivo según su deseo. Es un programa estándar de Linux que puede ordenar un archivo de texto alfabéticamente, numéricamente, por columna y más, ya sea en orden normal o inverso.

Otras funcionalidades del comando incluyen ignorar los casos de caracteres al ordenar, ordenar un archivo por mes, ignorar los espacios en blanco en un archivo y ordenar al azar. Usando ordenar, también puede verificar si un archivo ya está ordenado o no.

Cómo usar ordenar en Linux

Aunque sort contiene varios métodos e indicadores que puede utilizar, sigue siendo fácil de aprender.

Sintaxis básica

La sintaxis básica de usar sort es:

 sort filename

… donde nombre de archivo es la ruta absoluta o relativa del archivo de texto que desea ordenar.

De forma predeterminada, sort organizará el contenido según los siguientes criterios:

  1. Las líneas que comienzan con caracteres numéricos tienen la máxima prioridad.
  2. El comando ordenará las líneas alfabéticamente, después de ordenar las líneas que comienzan con números.
  3. Las líneas que comienzan con caracteres en minúscula preceden a las líneas que comienzan con el mismo carácter en mayúsculas.

Considere un archivo de texto llamado textfile.txt que contiene la siguiente información:

Para ordenar el archivo usando la configuración predeterminada:

 sort textfile.txt

Producción:

Crear un nuevo archivo de salida

El comando sort no modifica el contenido del archivo. Simplemente envía el contenido ordenado a la salida estándar. Sin embargo, esto no significa que sort no pueda crear un nuevo archivo. Puede usar la marca -o para especificar el nombre del archivo ordenado y sort creará automáticamente el archivo y agregará el contenido.

 sort -o sortedfile filename

… donde sortedfile es el nombre del archivo de salida y el nombre del archivo es el archivo original que necesita ser ordenado.

Para ordenar textfile.txt y crear un nuevo archivo de salida para el contenido:

 sort -o sorted.txt textfile.txt

Producción:

Ordenar varios archivos

Para ordenar más de un archivo a la vez, simplemente pase los nombres de archivo separados con el carácter de espacio .

 sort textfile.txt textfile2.txt

Producción:

Tenga en cuenta que sort fusionará la salida de los archivos y los mostrará juntos en la terminal.

Ordenación inversa de un archivo

Si desea invertir la disposición del contenido, use la marca -r con el comando predeterminado. La -r en el siguiente comando significa Reverse .

 sort -r textfile.txt

Producción:

Ordenar un archivo numéricamente

Para ordenar un archivo que contiene datos numéricos, use la marca -n con el comando. De forma predeterminada, sort organizará los datos en orden ascendente.

 sort -n numbers.txt

Producción:

Si desea ordenar en orden descendente, invierta la disposición usando la opción -r junto con el indicador -n en el comando.

 sort -rn numbers.txt

Producción:

Ignorar mayúsculas y minúsculas al ordenar

De forma predeterminada, la ordenación tiene en cuenta las mayúsculas y minúsculas del contenido. Las líneas que comienzan con caracteres en minúscula preceden a las líneas que comienzan con la versión en mayúsculas del mismo carácter. Por ejemplo, "él es un niño" precederá a "Él es un niño".

Si desea que sort ignore las mayúsculas y minúsculas, especifique la marca -f o –ignore-case de la siguiente manera:

 sort -f textfile.txt
sort --ignore-case textfile.txt

Producción:

Ordenar un archivo según el mes

Con el indicador -M , puede modificar el orden del contenido de un archivo en función de los nombres de los meses.

 sort -M textfile2.txt

Producción:

Ignorar espacios en blanco iniciales

A veces, el archivo que desea ordenar puede contener espacios o tabulaciones. Para ignorar estos caracteres en blanco, use la bandera -b .

 sort -b fileblanks.txt

Producción:

Ordenar un archivo según una columna

Si tiene un archivo de texto con datos organizados en columnas separadas, puede ordenar el archivo según el contenido de una columna. Todo lo que necesita hacer es pasar el número de columna junto con la bandera -k .

Considere un archivo de texto que contiene información de archivo con diferentes columnas. Para ordenar un archivo llamado output.txt de acuerdo con la octava columna:

 sort -k8 -rn output.txt

Producción:

Ordenación de tuberías con otros comandos

Incluso puede usar sort con otros comandos de Linux para modificar la disposición de la salida. Por ejemplo, para ordenar la salida del comando ls según el tamaño de los archivos:

 ls -la | sort -k5 -rn

Producción:

Ordenar un archivo aleatoriamente

Puede usar el indicador -R si desea aleatorizar el orden de las líneas en un archivo de texto. Considere el archivo textfile.txt :

 sort -R textfile.txt

Producción:

Ordenar números de versión en un archivo

Si tiene un archivo de texto que contiene información de versión asociada con un paquete, puede ordenar su contenido usando la marca -V o –version-sort .

 sort -V version.txt
sort --version-sort version.txt

Producción:

Comprobar si un archivo está ordenado

La bandera -c le ayudará a identificar los archivos que ya están ordenados de acuerdo con las opciones especificadas. Si el contenido del archivo está ordenado correctamente, sort no mostrará ningún resultado.

Para comprobar si el archivo textfile.txt está ordenado:

 sort -c textfile.txt

Ahora, clasifiquemos el archivo y guardemos su salida en un nuevo archivo llamado sorted.txt . Al emitir el siguiente comando:

 sort -c sorted.txt

Producción:

También puede especificar varias banderas para verificar la disposición del archivo de acuerdo con criterios particulares. Por ejemplo, para comprobar si el archivo numbers.txt está ordenado en orden descendente:

 sort -c -rn numbers.txt

Verá una salida que indica que el archivo no está ordenado correctamente. Ordenemos el archivo y verifiquemos si el nuevo archivo pasa la prueba.

 sort -o sorted.txt -rn numbers.txt
sort -c -rn sorted.txt

Producción:

Ordene el archivo y elimine los duplicados

El archivo con el que está trabajando puede contener datos duplicados. Aunque puede utilizar el comando uniq para eliminar dicha información del archivo, sort puede realizar esta tarea por usted. La bandera -u o –unique es lo que necesita.

Considere un archivo llamado duplicate.txt :

Para ordenar el archivo y eliminar los datos repetidos:

 sort -u duplicate.txt

Producción:

Puede ver que cuando usa el indicador -u , ordenar solo muestra líneas distintas y las organiza de acuerdo con los criterios especificados.

Trabajar con archivos de texto en Linux

Aunque el poder de los editores de texto de línea de comandos es incomparable, aún puede optar por un editor gráfico como gedit para modificar fácilmente el contenido de un archivo de texto. Además, es una mejor opción para aquellos que son nuevos en Linux y no pueden manejar la terminal.

La mejor manera de comenzar con la línea de comandos, y Linux en general, es practicando primero los comandos básicos. Después de cubrir las utilidades fundamentales, avanzar gradualmente hacia comandos más complejos es probablemente el mejor enfoque.