sort
Ordena líneas de texto alfabética o numéricamente.
Toma las líneas de entrada y las ordena según el criterio que elijas. Lo usas para ordenar listas, ordenar por una columna o preparar datos antes de pasarlos a uniq.
Sintaxis
sort [opciones] [ARCHIVO...]§ 1
Despiece
6 ejemplosOrdenar alfabéticamente
Ordenar alfabéticamente
2 piezas
Lámina01 / 06
Comandosort nombres.txt
Piezas2
Escala1:1
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | sort | Comando | El comando para ordenar líneas. |
| 2 | nombres.txt | Argumento | Archivo con una lista de nombres, uno por línea. |
Resultado
Muestra las líneas ordenadas de A a Z.
Ordenar numéricamente
3 piezas
Lámina02 / 06
Comandosort -n numeros.txt
Piezas3
Escala1:1
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | sort | Comando | El comando para ordenar líneas. |
| 2 | -n | Opción | Ordena numéricamente en lugar de carácter por carácter. |
| 3 | numeros.txt | Argumento | Archivo con números, uno por línea. |
Resultado
Ordena correctamente 1, 2, 10 (no 1, 10, 2 como lo haría alfabéticamente).
Ordenar de mayor a menor
3 piezas
Lámina03 / 06
Comandosort -rn numeros.txt
Piezas3
Escala1:1
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | sort | Comando | El comando para ordenar líneas. |
| 2 | -rn | Opción | -r invierte el orden y -n ordena numéricamente. |
| 3 | numeros.txt | Argumento | Archivo con números, uno por línea. |
Resultado
Muestra los números ordenados de mayor a menor.
Ordenar por una columna numérica
4 piezas
Lámina04 / 06
Comandosort -t: -k3,3n /etc/passwd
Piezas4
Escala1:1
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | sort | Comando | El comando para ordenar líneas. |
| 2 | -t: | Opción | Usa dos puntos como separador de campos. |
| 3 | -k3,3n | Opción | Ordena solo por el campo 3 y de forma numérica (la n pegada aplica -n a esa columna). |
| 4 | /etc/passwd | Argumento | Archivo de cuentas, con campos separados por dos puntos. El campo 3 es el UID. |
Resultado
Las cuentas quedan ordenadas por UID de menor a mayor: root (0) primero.
Ordenar y quitar duplicados
3 piezas
Lámina05 / 06
Comandosort -u lista.txt
Piezas3
Escala1:1
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | sort | Comando | El comando para ordenar líneas. |
| 2 | -u | Opción | Muestra solo una ocurrencia por línea única (unique). |
| 3 | lista.txt | Argumento | Archivo con líneas que pueden tener duplicados. |
Resultado
Obtienes la lista ordenada y sin duplicados. Ojo: el orden original se pierde.
Ordenar tamaños legibles (K, M, G)
6 piezas
Lámina06 / 06
Comandodu -sh * | sort -h
Piezas6
Escala1:1
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | du | Comando | Mide cuánto ocupa cada archivo o carpeta. |
| 2 | -sh | Opción | -s da un total por elemento y -h muestra tamaños como 4.0K, 12M o 1.2G. |
| 3 | * | Argumento | Todo lo que hay en la carpeta actual (sin ocultos). |
| 4 | | | Operador | Pasa la salida de du al comando sort. |
| 5 | sort | Comando | El comando para ordenar líneas. |
| 6 | -h | Opción | Ordena entendiendo los sufijos K, M y G, así 900K queda antes que 1.2G. |
Resultado
Las carpetas y archivos aparecen de menor a mayor tamaño; lo más pesado queda al final.
§ 2
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| -n--numeric-sort | Ordena numéricamente en lugar de alfabéticamente. |
| -r--reverse | Invierte el orden (de mayor a menor o Z a A). |
| -k--key | Ordena por una columna o campo. -k3,3 usa solo el campo 3; -k3 solo, va del campo 3 al final de la línea. |
| -t--field-separator | Define el separador de campos para usar con -k. |
| -u--unique | Elimina líneas duplicadas en la salida (ya ordenada). |
| -h--human-numeric-sort | Ordena números con sufijos K, M, G (útil para tamaños de archivo). |
§ 3
Fallas comunes
| Falla | Remedio |
|---|---|
| Ordenar números como texto | Olvidaste -n. Con sort solo, 10 va antes que 2. |
| Esperar que sort -u conserve el orden original. | sort -u reordena las líneas. Para quitar duplicados sin cambiar el orden usa awk '!visto[$0]++' archivo. |
| -k mal definido | Especifica bien el campo y, si es necesario, el separador con -t. Por ejemplo, sort -t: -k3,3n para ordenar numéricamente solo el campo 3. |
| Usar -k2 creyendo que ordena solo por la columna 2. | -k2 toma desde el campo 2 hasta el final de la línea. Para usar solo esa columna escribe -k2,2. |
§ 4
Preguntas frecuentes
- ¿Cómo ordeno un archivo en Linux?
- Con sort archivo.txt. Por defecto ordena alfabéticamente de A a Z.
- ¿Cómo ordeno números correctamente con sort?
- Usa la opción -n: sort -n archivo.txt. Así 1, 2, 10 se ordenan correctamente.
- ¿Cómo invierto el orden con sort?
- Agrega -r: sort -rn para números de mayor a menor, o sort -r para texto de Z a A.
- ¿Cuál es la diferencia entre sort -u y uniq?
- sort -u ordena y elimina duplicados en un solo paso. uniq solo elimina duplicados que estén en líneas seguidas; por eso casi siempre se usa después de sort, y tiene extras como uniq -c para contar repeticiones.
- ¿Cómo ordeno por una columna específica?
- Usa -k con el número de columna y -t para el separador. Ejemplo: sort -t, -k2,2 archivo.csv ordena por la segunda columna de un CSV sencillo. Agrega n (-k2,2n) si la columna tiene números.
§ 5