Il comando Ordina è utile per ordinare/ordinare le righe nei file di testo. È possibile ordinare i dati in un file di testo e visualizzare l'output sullo schermo oppure reindirizzarlo a un file. In base alle tue esigenze, sort fornisce diverse opzioni della riga di comando per ordinare i dati in un file di testo.
Sintassi del comando di ordinamento:
$ sort [-options]
Ad esempio, ecco un file di prova:
$ cat test zzz sss qqq aaa BBB ddd AAA
Ed ecco cosa ottieni quando il comando di ordinamento viene eseguito su questo file senza alcuna opzione. Ordina le righe nel file di prova e visualizza l'output ordinato.
$ sort test aaa AAA BBB ddd qqq sss zzz
1. Esegui l'ordinamento numerico usando l'opzione -n
Se vogliamo ordinare in base al valore numerico, possiamo usare -n o –ordinamento-numerico opzione.
Crea il seguente file di prova per questo esempio:
$ cat test 22 zzz 33 sss 11 qqq 77 aaa 55 BBB
Il seguente comando di ordinamento ordina le righe nel file di prova in base al valore numerico nella prima parola della riga e visualizza l'output ordinato.
$ sort -n test 11 qqq 22 zzz 33 sss 55 BBB 77 aaa
2. Ordina i numeri leggibili dall'uomo usando l'opzione -h
Se vogliamo ordinare i numeri leggibili dall'uomo (ad es. 2K 1M 1G), allora possiamo usare -h o –ordinamento-numerico-umano opzione.
Crea il seguente file di prova per questo esempio:
$ cat test 2K 2G 1K 6T 1T 1G 2M
Il seguente comando di ordinamento ordina i numeri leggibili dall'uomo (cioè 1K =1 mila, 1M =1 milione, 1G =1 Giga, 1T =1 Tera) nel file di test e visualizza l'output ordinato.
$ sort -h test 1K 2K 2M 1G 2G 1T 6T
3. Ordina i mesi di un anno usando l'opzione -M
Se vogliamo ordinare in base ai mesi dell'anno, possiamo usare -M o –ordinamento-mese opzione.
Crea il seguente file di prova per questo esempio:
$ cat test sept aug jan oct apr feb mar11
Il seguente comando di ordinamento ordina le righe nel file di prova in base all'ordine del mese. Nota, le righe nel file devono contenere almeno 3 caratteri del nome del mese all'inizio della riga (ad esempio jan, feb, mar). Se diamo, ja per gennaio o au per agosto, il comando di ordinamento non lo considererebbe come nome del mese.
$ sort -M test jan feb mar11 apr aug sept oct
4. Verifica se il contenuto è già ordinato utilizzando l'opzione -c
Se vogliamo verificare che i dati nel file di testo siano ordinati o meno, possiamo usare -c oppure –check, –check=diagnose-first opzione.
Crea il seguente file di prova per questo esempio:
$ cat test 2 5 1 6
Il seguente comando di ordinamento controlla se i dati del file di testo sono ordinati o meno. In caso contrario, mostra la prima occorrenza con numero di riga e valore disordinato.
$ sort -c test sort: test:3: disorder: 1
5. Invertire l'output e verificare l'unicità utilizzando le opzioni -r e -u
Se vogliamo ottenere l'output ordinato in ordine inverso, possiamo usare -r o –indietro opzione. Se il file contiene righe duplicate, per ottenere righe univoche nell'output ordinato, è possibile utilizzare l'opzione "-u".
Crea il seguente file di prova per questo esempio:
$ cat test 5 2 2 1 4 4
Il seguente comando di ordinamento ordina le righe nel file di prova in ordine inverso e visualizza l'output ordinato.
$ sort -r test 5 4 4 2 2 1
Il seguente comando di ordinamento ordina le righe nel file di prova in ordine inverso e rimuove le righe duplicate dall'output ordinato.
$ sort -r -u test 5 4 2 1
6. Ordina il contenuto in modo selettivo, Personalizza il delimitatore, Scrivi l'output in un file usando le opzioni -k, -t, -o
Se vogliamo ordinare in base alla colonna o alla posizione della parola nelle righe del file di testo, è possibile utilizzare l'opzione "-k". Se ogni parola in ogni riga del file è separata da un delimitatore eccetto "spazio", allora possiamo specificare il delimitatore usando l'opzione "-t". Possiamo ottenere l'output ordinato in qualsiasi file di output specificato (usando l'opzione "-o") invece di visualizzare l'output sull'output standard.
Crea il seguente file di prova per questo esempio:
$ cat test aa aa zz aa aa ff aa aa tt aa aa kk
Il seguente comando di ordinamento ordina le righe nel file di prova sulla terza parola di ciascuna riga e visualizza l'output ordinato.
$ sort -k3 test aa aa ff aa aa kk aa aa tt aa aa zz
$ cat test aa|5a|zz aa|2a|ff aa|1a|tt aa|3a|kk
Qui, vengono utilizzate diverse opzioni del tutto. Nel file di prova, le parole in ogni riga sono separate dal delimitatore '|'. Ordina le righe nel file di prova sulla seconda parola di ogni riga in base al valore numerico e memorizza l'output ordinato nel file di output specificato.
$ sort -n -t'|' -k2 test -o outfile
Il contenuto del file di output è mostrato di seguito.
$ cat outfile aa|1a|tt aa|2a|ff aa|3a|kk aa|5a|zz