Clasificación numérica y separadores de campos
En muchos escenarios del mundo real, es posible que necesites ordenar archivos que contengan valores numéricos o datos con múltiples campos. El comando sort ofrece opciones para estos casos.
Clasificación numérica
Creemos un archivo con valores numéricos para explorar la clasificación numérica:
- Crea un archivo llamado
numbers.txt:
cd ~/project
echo -e "10\n5\n100\n20\n1\n50" > numbers.txt
- Visualiza el contenido del archivo:
cat numbers.txt
Debes ver:
10
5
100
20
1
50
- Si usas el comando
sort básico en este archivo:
sort numbers.txt
La salida será:
1
10
100
20
5
50
Observa que esto no está en el orden numérico correcto porque sort trata cada línea como texto por defecto. La cadena "100" viene antes que "20" en orden lexicográfico (diccionario).
- Para ordenar numéricamente, usa la opción
-n:
sort -n numbers.txt
Ahora verás el orden numérico correcto:
1
5
10
20
50
100
Clasificación de archivos con múltiples campos
A menudo, los archivos contienen múltiples campos separados por delimitadores como comas, tabulaciones o espacios. El comando sort te permite especificar en qué campo se debe realizar la clasificación.
- Crea un archivo CSV (Valores Separados por Comas) con algunos datos de muestra:
cd ~/project
echo -e "Name,Age,City\nAlice,28,New York\nBob,35,Los Angeles\nCarol,22,Chicago\nDavid,31,Boston\nEve,26,Seattle" > people.csv
- Visualiza el contenido del archivo:
cat people.csv
Debes ver:
Name,Age,City
Alice,28,New York
Bob,35,Los Angeles
Carol,22,Chicago
David,31,Boston
Eve,26,Seattle
- Para ordenar este archivo por el segundo campo (Edad), usa la opción
-t para especificar el separador de campos (coma en este caso) y la opción -k para especificar el número del campo:
sort -t, -k2,2n people.csv
La opción -t, establece el separador de campos como coma, y -k2,2n le indica a sort que use el segundo campo para la clasificación y que lo trate como un valor numérico.
La salida debería ser:
Name,Age,City
Carol,22,Chicago
Eve,26,Seattle
Alice,28,New York
David,31,Boston
Bob,35,Los Angeles
- También puedes ordenar por el tercer campo (Ciudad) alfabéticamente:
sort -t, -k3,3 people.csv
La salida será:
Name,Age,City
David,31,Boston
Carol,22,Chicago
Bob,35,Los Angeles
Alice,28,New York
Eve,26,Seattle
Al utilizar estas opciones, puedes ordenar eficazmente archivos con diversos formatos de datos según tus necesidades.