1.11. Buscar, ordenar i associar fitxers
1.11.4. «sort»
Com el seu nom indica, en anglès, aquesta ordre s’utilitza per ordenar el contingut dels arxius d’entrada. Ordre alfabètic i ordre numèric? Possible. Què tal ordenar una columna específica? Possible. Ordre de classificació múltiple prioritari? Possible. ¿Aleatori? ¿Únic? Moltes característiques són compatibles amb aquesta ordre tan poderosa.
Es mostren a continuació les opcions d’ús comú. Els exemples es discutiran en seccions posteriors.
-n
ordenar numèricament.-g
ordenació numèrica general.-V
ordenar per versió (conscient dels números dins del text).-h
ordenar números llegibles per a humans (per exemplo: 4K, 3M, 12G, etc.).-k
ordenar mitjançant clau (ordenació de columna). Similar a -f de l’ordre cut.-t
separador de camp d’un sol byte de caràcter (el valor predeterminat és la transició de no espai en blanc a espai en blanc).-u
ordenar de forma única.-R
ordenar aleatòriament.-r
invertir la sortida d’ordenació.-o
redirigir el resultat ordenat a l’arxiu especificat.
De forma predeterminada, sort
ordena l’entrada lexicogràficament en ordre ascendent. Pot utilitzar l’opció -r per invertir els resultats.
# Ordre per defecte
$ printf 'banana\ncirera\nmaduixa' | sort
banana cirera maduixa
# Ordena i imprimeix en ordre invers
$ printf 'hotel\nresidencia\nesperanza' | sort -r
residencia hotel esperanza
# Ordena numèricament i imprimeix
$ printf '20\n2\n3' | sort -n
2 3 20
# Ordena els números a la manera humana
$ sort -hr fitxer.txt
1.4G genomica 316M proteomica 746K wdl.log 104K gromacs.log 20K sample.txt
# Ordena tenint en compte la versió
$ sort -V temps.txt
3m20.058s 3m42.833s 4m3.083s 4m11.130s 5m35.363s
# Genera el següent fitxer
$ cat model.txt
GWAS 50 NGS 5 RNA-seq 2 ChIP-Seq 25 WES 10
# Ordena tenint en compte els números de la segona columna
$ sort -k2,2n model.txt
RNA-seq 2 NGS 5 WES 10 ChIP-Seq 25 GWAS 50
Per exemple, podem ordenar els transcriptors de la manera següent:
$ cat hg38_RefSeq | cut -f 2,4| sort
En l’exemple anterior, en utilitzar l’ordre sort
notem que la llista resultant contenia transcrits repetits. Per eliminar línies duplicades consecutives, podem utilitzar l’ordre uniq
. És important recordar que, per a una eliminació completa de duplicats, cal ordenar l’arxiu amb sort
abans d’utilitzar uniq
:
$ cat hg38_RefSeq | cut -f 2,4| sort -2rn | uniq