1. Introducción a los entornos de trabajo UNIX

1.11. Buscar, ordenar y asociar ficheros

1.11.4. «sort»

Como su nombre indica, en inglés, este comando se utiliza para ordenar el contenido de los archivos de entrada. ¿Orden alfabético y orden numérico? Posible. ¿Qué tal ordenar una columna específica? Posible. ¿Orden de clasificación múltiple prioritario? Posible. ¿Aleatorio? ¿Único? Muchas características son compatibles con este poderoso comando.

Se muestran a continuación las opciones de uso común. Los ejemplos se discutirán en secciones posteriores.

  • -n ordenar numéricamente.
  • -g ordenación numérica general.
  • -V ordenar por versión (consciente de los números dentro del texto).
  • -h ordenar números legibles para humanos (por ejemplo: 4K, 3M, 12G, etc.).
  • -k ordenar mediante clave (ordenación de columna). Similar a -f del comando cut.
  • -t separador de campo de un solo byte de carácter (el valor predeterminado es la transición de no espacio en blanco a espacio en blanco).
  • -u ordenar de forma única.
  • -R ordenar aleatoriamente.
  • -r invertir la salida de ordenación.
  • -o redirigir el resultado ordenado al archivo especificado.

 De forma predeterminada, sort ordena la entrada lexicográficamente en orden ascendente. Puede utilizar la opción -r para invertir los resultados.

 # Orden por defecto

$ printf 'banana\ncereza\nfresa' | sort
banana

cerera

fresa

# Ordena e imprime en orden inverso

$ printf 'hotel\nresidencia\nesperanza' | sort -r
residencia

hotel

esperanza

# Ordena numéricamente e imprime

$ printf '20\n2\n3' | sort -n
2

3

20

# Ordena los números a la manera humana

$ sort -hr fichero.txt
1.4G    genomica

316M    proteomica

746K    wdl.log

104K    gromacs.log

20K     sample.txt

# Ordena teniendo en cuenta la versión

$ sort -V tiempos.txt
3m20.058s

3m42.833s

4m3.083s

4m11.130s

5m35.363s

# Genera el siguiente fichero

$ cat modelo.txt
GWAS   50

NGS    5

RNA-seq   2

ChIP-Seq   25

WES  10

# Ordena teniendo en cuenta los números de la segunda columna

$ sort -k2,2n modelo.txt
RNA-seq   2

NGS    5

WES  10

ChIP-Seq   25

GWAS   50

Por ejemplo, podemos ordenar los transcriptos de la siguiente manera:

$ cat hg38_RefSeq | cut -f 2,4| sort

En el ejemplo anterior, al utilizar el comando sort, notamos que la lista resultante contenía transcritos repetidos. Para eliminar líneas duplicadas consecutivas, podemos emplear el comando uniq. Es importante recordar que, para una eliminación completa de duplicados, es necesario ordenar el archivo consort antes de utilizar uniq:

$ cat hg38_RefSeq | cut -f 2,4| sort -2rn | uniq