Linux / Comando sort: ordenar líneas por texto, números y campos
sort compara las líneas del archivo de entrada y envía el resultado ordenado a la salida estándar. Se usa no solo para ordenar por nombre, sino también cuando se necesita ordenar por números, campos específicos o en orden inverso.
El ordenamiento predeterminado sigue las reglas de comparación de caracteres de la configuración regional actual. El archivo original permanece intacto y solo se muestra el resultado, por lo que para guardar el resultado, rediríjalo a un archivo separado o use la opción GNU -o. Si es importante un orden de clasificación reproducible, especifique LC_ALL=C.
Sintaxis básica
sort [opciones] [archivo ...]
La implementación instalada y las opciones pueden variar según la distribución. Verifique la descripción de man sort en el sistema actual.
Ejemplos de uso
Ordenamiento básico
Los ejemplos con names.txt, scores.txt y results.txt requieren archivos de texto existentes; el último necesita un segundo campo numérico. Sustituya esos nombres por los suyos. sort trata cada línea como un registro y envía la ordenación a la salida estándar sin modificar la entrada. El bloque posterior con printf permite practicar sin crear archivos.
sort names.txt
Ordenamiento numérico
Si se comparan los números como texto, 10 podría aparecer antes que 2, por lo que se usa -n.
sort -n scores.txt
Orden por segundo campo
Compara el segundo campo como número en datos separados por espacios. Es adecuado para entradas con una estructura de campos consistente.
sort -k2,2n results.txt
Ver la entrada y los resultados de la ordenación juntos
El siguiente ejemplo ordena tres líneas de la entrada estándar sin crear un archivo. La ordenación predeterminada sigue el orden de caracteres de la configuración regional actual y los datos originales no se modifican.
printf 'zebra\napple\nbanana\n' | sort
Ejemplo de salida:
apple
banana
zebra
Las líneas que contienen números se comparan como cadenas de texto por defecto, por lo que 10 puede preceder a 2. Si el objetivo es la comparación numérica, use sort -n. Para ordenar un archivo y guardar el resultado en un nuevo archivo, especifique la ruta de salida como sort entrada.txt > salida.txt y no redirija directamente al mismo archivo. El shell puede vaciar primero el archivo de entrada.
Al ordenar por varias columnas, especifique el rango de cada clave y, si desea mantener el orden original de las claves iguales, consulte -s. Dado que el orden de los caracteres puede cambiar con diferentes configuraciones regionales, en scripts reproducibles se debe definir claramente un entorno de comparación como LC_ALL=C.
Opciones y formatos principales
| Opción o formato | Descripción |
|---|---|
-n |
Compara usando valores numéricos. |
-r |
Invierte el orden de los resultados. |
-k inicio,fin |
Especifique los campos clave para la comparación. |
-u |
Al ordenar, deja solo un resultado de cada clave duplicada. |
-t separador |
Especifica el carácter delimitador de campo. |
Precauciones al usar
sort -u puede combinar en una sola línea las líneas que tienen la misma clave de comparación, así que tenga cuidado si otros campos del original son importantes. Si desea mantener el orden original de aparición del texto y solo eliminar duplicados adyacentes, uniq es diferente. Si utiliza > archivo_de_entrada en el archivo de entrada, la shell puede vaciar primero el archivo.
Preguntas frecuentes
¿Cómo guardar el resultado de la ordenación en el archivo original?
En GNU sort se puede utilizar sort -o names.txt names.txt. Haga una copia de seguridad de los archivos importantes primero.
Documentación oficial
Las diferencias exactas en el funcionamiento de las opciones y según la implementación se pueden consultar en la documentación oficial de sort.




