1. Introducció als entorns de treball UNIX

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