14 ejemplos útiles del comando ‘sort’ en Linux – Parte 1

El comando ‘sort’ es un programa de Linux utilizado para imprimir líneas de archivos de texto de entrada y la concatenación de todos los archivos en orden ordenado. El comando sort toma un espacio en blanco como separador de campos y todo el archivo de entrada como clave de ordenación. Es importante notar que el comando sort en realidad no ordena los archivos, sino que solo imprime la salida ordenada hasta que redirige la salida.

Este artículo tiene como objetivo proporcionar una comprensión profunda del comando ‘sort’ de Linux con 14 ejemplos prácticos útiles que le muestran cómo utilizar el comando sort en Linux.

1. Creación de un archivo de texto con contenido especificado

Primero, crearemos un archivo de texto, llamado ‘tecmint.txt’, que se utilizará para ejecutar ejemplos de comandos ‘sort’ en nuestro directorio de trabajo para esta tarea, que es ‘/home/$USER/Desktop/tecmint’.

La opción ‘-e’ en el comando siguiente habilita la interpretación de la barra invertida y /n indica a echo que escriba cada cadena en una nueva línea.

echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt

2. Ver el contenido del archivo

Antes de comenzar con el comando ‘sort’, veamos el contenido del archivo y cómo aparece utilizando el siguiente comando cat.3. Ordenar el contenido del archivo

cat tecmint.txt

3. Ordenar el contenido del archivo

El comando “sort tecmint.txt” se utiliza para reorganizar las líneas en el archivo en orden alfabético ascendente, si hay líneas duplicadas, mantendrá una copia de cada línea única.

sort tecmint.txt

Note: The above command doesn’t sort the contents of the text file but only displays the sorted output on the terminal.

4. Redirigir la salida ordenada a un nuevo archivo

El siguiente comando se utiliza para ordenar las líneas del archivo de texto “tecmint.txt” en orden alfabético y luego redirige la salida ordenada a un nuevo archivo llamado “sorted.txt“, lo que significa que el archivo original no se modifica y el contenido ordenado se almacena en un archivo separado.

Para verificar el contenido, use el comando cat.

sort tecmint.txt > sorted.txt
cat sorted.txt

5. Ordenar el contenido del archivo en orden inverso

El siguiente comando se utiliza para ordenar las líneas del archivo de texto “tecmint.txt” en orden inverso, lo que significa que organizará las líneas en orden alfabético descendente y la salida ordenada se redirige a un nuevo archivo llamado “reversesorted.txt

sort -r tecmint.txt > reversesorted.txt
cat reversesorted.txt

6. Guardar la lista de archivos y directorios

El siguiente comando se utiliza para listar el contenido del directorio personal del usuario (“/home/$USER“) en una vista detallada y en formato largo utilizando el comando ls y luego redirecciona esta lista de directorios a un archivo de texto llamado “lsl.txt” ubicado en el escritorio del usuario, específicamente en el directorio “tecmint“.

ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt
cat lsl.txt

Ahora, exploraremos ejemplos de ordenar el contenido basándose en campos distintos a los caracteres iniciales por defecto.

7. Ordenar ‘Contenido de Archivo Basado en el Segundo Campo

El siguiente comando se utiliza para ordenar el contenido del archivo “lsl.txt” basándose en los valores en el segundo campo de cada línea. La opción '-n' indica una clasificación numérica, tratando el segundo campo como números en lugar de texto.

La opción '-k2' especifica que queremos ordenar basándonos en el segundo campo. Al ejecutar este comando, obtendrás una lista ordenada de las líneas en “lsl.txt“, con el criterio de ordenación siendo los valores numéricos en el segundo campo de cada línea.

sort -nk2 lsl.txt

8. Ordenar Contenido de Archivo Basado en el Noveno Campo

El siguiente comando se utiliza para ordenar las líneas en el archivo “lsl.txt” basándose en los valores en el noveno campo de cada línea en orden ascendente. La opción '-k9' especifica que la ordenación debe hacerse basándose en el noveno campo.

sort -k9 lsl.txt

9. Ordenar Archivos por Tamaño de Archivo

El siguiente comando combina los comandos ‘ls‘ y ‘sort‘ para listar el contenido del directorio personal del usuario en un formato de lista detallado y luego envía la lista de directorios a 'sort -nk5', que ordena la lista en función de los valores en la quinta columna, que representa los tamaños de los archivos.

ls -l /home/$USER | sort -nk5

10. Eliminar líneas duplicadas en un archivo

El siguiente comando ordena las líneas en el archivo “tecmint.txt” en orden alfabético ascendente y elimina cualquier línea duplicada utilizando la opción '-u', que significa “único”, y garantiza que se conserven las líneas únicas en la salida ordenada.

$ cat tecmint.txt
$ sort -u tecmint.txt

Reglas hasta ahora (lo que hemos observado):

  • Las líneas que comienzan con números tienen prioridad en la lista y se ubican en la parte superior hasta que se especifique lo contrario (-r).
  • Las líneas que comienzan con letras minúsculas tienen prioridad en la lista y se ubican en la parte superior hasta que se especifique lo contrario (-r).
  • Los contenidos se listan en función de la aparición de las letras en el diccionario hasta que se especifique lo contrario (-r).
  • El comando sort, por defecto, trata cada línea como una cadena y luego la ordena en función de la aparición del diccionario de las letras (preferencia numérica; ver regla – 1) hasta que se especifique lo contrario.

11. Redirigir la lista de directorios a un archivo

El siguiente comando lista el contenido del directorio personal del usuario en formato largo, incluyendo archivos y directorios ocultos, y luego redirecciona la lista de directorios a un archivo de texto llamado “lsla.txt” ubicado en el escritorio del usuario dentro del directorio “tecmint“.

ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt
cat lsla.txt

Aquellos familiarizados con el comando ls entienden que 'ls -lA' es equivalente a 'ls -l' más archivos ocultos. Como resultado, la mayoría del contenido en estos dos comandos será el mismo.

12. Ordenar el contenido de los archivos

El siguiente comando ordena el contenido de dos archivos de texto, ‘lsl.txt‘ y ‘lsla.txt‘, en orden alfabético ascendente y luego combina y muestra el contenido ordenado en la terminal.

$ sort lsl.txt lsla.txt

Observe la repetición de archivos y carpetas.

13. Eliminar líneas duplicadas en el archivo

El siguiente comando fusiona y ordena el contenido de dos archivos de texto, ‘lsl.txt‘ y ‘lsla.txt‘, en orden alfabético ascendente mientras elimina cualquier línea duplicada utilizando la opción '-u', que garantiza que se conserven líneas únicas en la salida ordenada.

$ sort -u lsl.txt lsla.txt

Observe que los duplicados se han omitido de la salida. Además, puede guardar la salida en un nuevo archivo redireccionándola.

14. Ordenar la salida por múltiples campos utilizando delimitador personalizado

El siguiente comando combina los comandos ‘ls‘ y ‘sort‘ para listar el contenido del directorio personal del usuario en formato largo y luego envía la lista de directorios al comando ‘sort‘, que ordena la salida en función de columnas y campos específicos.

ls -l /home/$USER | sort -t "," -nk2,5 -k9

Aquí hay una explicación del comando:

  • -t "," – especifica que una coma (",") se usa como delimitador de campo.
  • -nk2,5 – indica la ordenación por un valor numérico en las columnas 2 a 5, que generalmente representan detalles de permisos y propietarios.
  • -k9 – ordena además el resultado en función de la novena columna, que representa los tamaños de archivo.

Eso es todo por ahora. En el próximo artículo, profundizaremos en ejemplos más detallados del comando sort para ti.

Por favor, continúa compartiendo, comentando, dando me gusta y ayudándonos a llegar a un público más amplio.

Source:
https://www.tecmint.com/sort-command-linux/