systemadmin.es > Utilidades > Uso de sort: Herramientas UNIX (X)

Uso de sort: Herramientas UNIX (X)

Mediante el uso de sort podemos ordenar la salida de los comandos ya sea alfabéticamente como numéricamente. A continuación veremos unos ejemplos de uso del comando sort.

Vamos a suponer el siguiente fichero de ejemplo:

# cat /tmp/lusers
rose            1234
redsell         2345
lilypink        3456
madmax          4567
nolives         5678
lilkington      6789
sutton          4444
bint            2222
afra            1111
cita            0000

Para ordenar alfabéticamente el fichero podemos usar el comando sort sin parámetros:

# cat /tmp/lusers | sort
afra            1111
bint            2222
cita            0000
lilkington      6789
lilypink        3456
madmax          4567
nolives         5678
redsell         2345
rose            1234
sutton          4444

En el caso que queramos ordenar numéricamente un conjunto de valores lo podemos hacer indicando el parámetro -n:

# cat /tmp/lusers | awk '{ print $2}' | sort -n
0000
1111
1234
2222
2345
3456
4444
4567
5678
6789

En el caso que queramos indica una columna por la que ordenar podemos usar el parámetro -k. Por ejemplo, para ordenar numéricamente por la segunda columna usaríamos -nk 2:

# cat /tmp/lusers | sort -nk 2
cita            0000
afra            1111
rose            1234
bint            2222
redsell         2345
lilypink        3456
sutton          4444
madmax          4567
nolives         5678
lilkington      6789

Para ordenar por el orden inverso podemos usar la opción -r:

# cat /tmp/lusers | sort -nrk 2
lilkington      6789
nolives         5678
madmax          4567
sutton          4444
lilypink        3456
redsell         2345
bint            2222
rose            1234
afra            1111
cita            0000

En el caso que tengamos el fichero con un separador diferente a espacios podemos usar la opción -t para indicar el separador. Por ejemplo, suponiendo el siguiente fichero de entrada separado por comas (CSV):

rose,1234
redsell,2345
lilypink,3456
madmax,4567
nolives,5678
lilkington,6789
sutton,4444
bint,2222
afra,1111
cita,0000

Indicamos con -t la coma como separador:

# cat /tmp/lusers.csv | sort -t, -bk 2
cita,0000
afra,1111
rose,1234
bint,2222
redsell,2345
lilypink,3456
sutton,4444
madmax,4567
nolives,5678
lilkington,6789

4 comments to “Uso de sort: Herramientas UNIX (X)”

  1. Muy útil la entrada, como siempre.

    Yo añadiría la opción -u, que nos permite hacer lo mismo que si ponemos un pipe a uniq, es decir, ordena la salida y sólo muestra la primera ocurrencia de cada línea.

  2. Realmente útil, si, sobretodo para el parsing de logs!

    Muchas gracias por el comentario!

  3. ¿se podria ordenar de tal forma que las lineas que tienen un mismo valor en una de las dos columnas, no apareciera en la salida?¿cómo?Por ejemplo: tres columnas (dia, ciudad, grados de temperatura). Sacar por pantalla, para cada ciudad, la temperatura máxima.

  4. cseguram, te respondo después de más de 1 año. Eso se hace con awk.

    cat archivo.txt | sort (modificadores) | awk (sacas la T° máxima)

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>