El comando sort es una de las utilidades principales de GNU que se utiliza para ordenar el contenido en un orden particular. Puede ordenar el contenido de varias maneras, que incluyen alfabéticamente, numéricamente, por mes, en orden inverso, etc. Estos son algunos puntos clave que debe tener en cuenta con respecto al comando de ordenación:
- Los dígitos aparecen primero antes de las letras
- Para cada letra, las minúsculas se ordenan primero.
- De forma predeterminada, los espacios se utilizan como separadores de campo. También se pueden usar otros separadores de campo.
En esta publicación, le mostraremos el uso básico y algunas opciones comunes del comando sort en Linux. Probaremos todos los comandos en Ubuntu 20.04 LTS . Sin embargo, puede aplicar los mismos comandos en otras distribuciones de Linux.
La sintaxis del comando ordenar es la siguiente:
$ sort [OPTION]... [FILE]...
Uso básico del comando Ordenar
El uso del comando sort sin ninguna opción de línea de comandos ordena alfabéticamente el contenido de un archivo específico.
A continuación se muestra nuestro sample1.txt archivo que usaremos como ejemplo.
Para ordenar el contenido de sample1.txt archivo, el comando sería:
$ sort sample1.txt
Aquí está el resultado del comando anterior que muestra el contenido ordenado alfabéticamente.
Si el archivo contiene tanto letras como números, entonces el comando ordenar ordenará los números antes que las letras. A continuación se muestra nuestro archivo de muestra que contiene números y alfabetos:
Aquí está el resultado del archivo anterior después de ordenar donde puede ver que los números están ordenados antes que los alfabetos.
Opciones de orden de comando
El comando ordenar proporciona muchas opciones que amplían su utilidad. Echemos un vistazo a algunas de las opciones y cómo usarlas.
Ordenar en orden inverso
Para ordenar el contenido del archivo en orden inverso, use -r opción. Por ejemplo, a continuación se muestra el contenido de nuestro archivo de muestra que queremos clasificar en orden alfabético inverso.
Para ordenar el contenido de este archivo en orden inverso, use -r opción de la siguiente manera:
$ sort -r sample1.txt
Clasificar en orden numérico
Para ordenar los datos numéricamente, use -n opción con el comando ordenar. Esta opción es útil si su archivo contiene números y desea ordenarlos del número más bajo al más alto o del más alto al más bajo. Tenga en cuenta que en la clasificación predeterminada, 113 se consideraría menor que 2.
A continuación se muestra un ejemplo de una clasificación predeterminada de nuestro archivo de muestra. Tenga en cuenta que en la clasificación predeterminada, la clasificación se realiza en función del primer número. Si el primer número es el mismo, se ordena según el segundo número. Como en el siguiente ejemplo, 113 es más pequeño que 13 y 2.
Para ordenar el contenido anterior numéricamente (del número más bajo al más alto), use -n opción de la siguiente manera:
$ sort -n sample2.txt
Ordenar por mes
El comando de clasificación predeterminado ordena el contenido del archivo alfabéticamente. Si un archivo contiene una lista de nombres de meses, puede ordenarlos por mes usando -M dominio. Por ejemplo, a continuación se encuentra nuestro archivo de muestra que contiene los nombres de los meses.
Para ordenar el contenido del archivo anterior por meses, use -M opción de la siguiente manera:
$ sort -M sample3.txt
Ordenar según el número de columna
De forma predeterminada, el comando ordenar comienza a ordenar el contenido según el primer carácter de la primera columna.
Por ejemplo, a continuación se encuentra nuestro archivo de muestra que contiene dos columnas; nombres de frutas y sus respectivos precios. Si usamos la clasificación predeterminada, se haría en función de la primera columna (que contiene los nombres de las frutas).
Para ordenar el contenido del archivo anterior sobre la base de la segunda columna (precios), tendremos que usar el comando -k de la siguiente manera:
$ sort -k2 -n sample1.txt
Donde -k2 le dice al comando de clasificación que ordene en la segunda columna y -n se usa para la clasificación numérica.
El comando anterior ordenará el contenido en función de sus precios (de menor a mayor).
Usar un separador de campo diferente
De forma predeterminada, el comando de clasificación utiliza un espacio como separador de campos. Para usar un separador de campo diferente al espacio, use -t opción. A continuación se muestra nuestro archivo de muestra que queremos ordenar en función de la segunda columna (separada por comas ).
El comando para ordenar el archivo anterior sobre la base de la segunda columna sería:
$ sort -k2 -n -t “,” sample1.txt
Donde -k2 le dice al comando de ordenación que ordene en la segunda columna, -n se usa para la ordenación numérica y -t se usa para especificar el separador de campo.
Ordenar y eliminar duplicados
El -u La opción con el comando ordenar también elimina los duplicados junto con la clasificación del contenido. A continuación se muestra nuestro archivo de muestra que contiene los valores duplicados.
Para ordenar este archivo alfabéticamente y eliminar también los valores duplicados, el comando sería:
$ sort -u sample1.txt
Esta es la salida del archivo ordenado con los duplicados eliminados.
Comprobar entrada ordenada
Usando -c opción con el comando ordenar, puede verificar si un archivo se clasificó antes o no. Si un archivo se ordena antes, no verá ningún resultado. Sin embargo, si el archivo no está ordenado, mostrará las líneas que están desordenadas.
Aquí está nuestro archivo de muestra:
Para verificar si este archivo ya está ordenado o no, use -c opción de la siguiente manera:
$ sort -c sample.txt
Como nuestro archivo de muestra ya estaba ordenado, no se muestra ningún resultado.
Guardar resultados ordenados en un archivo
El comando Ordenar solo muestra la salida ordenada en la Terminal; no lo guarda. Para guardar la salida ordenada en un archivo separado, use el operador de redirección. Por ejemplo, para guardar la salida ordenada de archivo.txt en un nuevo archivo llamado sortedfile.txt , use el siguiente comando:
$ sort file.txt > sortedfile.txt
Ordenar comando usando la opción de tubería
Puede ordenar la salida de otros comandos conectándolos al comando sort. Por ejemplo, queremos ordenar numéricamente una lista de archivos/directorios en el directorio de inicio por sus tamaños. Podemos hacerlo usando el ls comando y canalizar su salida para ordenar el comando de la siguiente manera.
$ ls -l /home/kbuzdar/ | sort -nk5
Aquí está el resultado del comando anterior donde puede ver que los archivos están ordenados por tamaño.
En esta publicación, explicamos la sintaxis básica y el uso del comando sort en Linux. También explicamos algunas de las opciones comunes para ampliar su funcionalidad. Para ver la ayuda y conocer más opciones de clasificación, visite la página del manual de clasificación o escriba sort –help en Terminal.