El comando sort permite ordenar líneas de un flujo de bytes. Este ordenamiento se puede hacer considerando caracteres ASCII, numéricos, binarios, entre otros.
Por ejemplo:
rodolfo@rcampos-laptop:~/sort$ cat a hello 1 3 44 4 5 foo rodolfo@rcampos-laptop:~/sort$ sort a 1 3 4 44 5 foo hello rodolfo@rcampos-laptop:~/sort$ sort -n a foo hello 1 3 4 5 44
En el ejemplo mostrado arriba, el archivo "a" fue ordenado en orden alfabético y luego numérico (opción -n). Para ambos casos, puede observar la diferencia por las posiciones de las palabras y los números 4, 5 y 44.
Pero sort también puede ordenar un archivo con líneas con campos separados por algún caracter (Ej. CSV) rápidamente y sin mayores complicaciones. Esto sobre todo me fue de gran utilidad para ordenar un archivo que pesaba 1Gb y estaba separado por "|". Obviamente debido al tamaño, no resultaba trivial abrir el mismo con Excel y pedirle que ordenara las líneas por la columna X. Mire este ejemplo:
rodolfo@rcampos-laptop:~/sort$ cat a name|id|type first|3|1 second|1|1 third|2|2 fourth|0|2 rodolfo@rcampos-laptop:~/sort$ sed '1d' a | sort -t '|' -nk 2 fourth|0|2 second|1|1 third|2|2 first|3|1
En el ejemplo de arriba, es removida la primera línea del archivo con sed (1d) y luego ordenado de forma numérica (-n) considerando el segundo campo (-k 2) para un flujo con campos separados por "|" (opción -t).
No hay comentarios:
Publicar un comentario