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.
-nordenar numéricamente.-gordenación numérica general.-Vordenar por versión (consciente de los números dentro del texto).-hordenar números legibles para humanos (por ejemplo: 4K, 3M, 12G, etc.).-kordenar mediante clave (ordenación de columna). Similar a -f del comando cut.-tseparador 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).-uordenar de forma única.-Rordenar aleatoriamente.-rinvertir la salida de ordenación.-oredirigir 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