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