Bash
Usando ordinamento
Ricerca…
introduzione
sort è un comando Unix per ordinare i dati in file (s) in una sequenza.
Sintassi
- ordina [opzione] nomefile
Parametri
Opzione | Senso |
---|---|
-u | Rendi uniche le singole linee di output |
Osservazioni
Manuale utente completo di lettura sort
online
Ordina l'output del comando
sort
comando sort
è usato per ordinare una lista di linee.
Input da un file
sort file.txt
Input da un comando
È possibile ordinare qualsiasi comando di output. Nell'esempio un elenco di file che segue un modello.
find * -name pattern | sort
Rendi unico l'output
Se ciascuna riga dell'output deve essere unica, aggiungi l'opzione -u
.
Per visualizzare il proprietario dei file nella cartella
ls -l | awk '{print $3}' | sort -u
Ordinamento numerico
Supponiamo di avere questo file:
test>>cat file
10.Gryffindor
4.Hogwarts
2.Harry
3.Dumbledore
1.The sorting hat
Per ordinare numericamente questo file, usare sort con l'opzione -n:
test>>sort -n file
Questo dovrebbe ordinare il file come di seguito:
1.The sorting hat
2.Harry
3.Dumbledore
4.Hogwarts
10.Gryffindor
Ordine di inversione: per invertire l'ordine dell'ordinamento, utilizzare l'opzione -r
Per invertire l'ordinamento del file sopra, utilizzare:
sort -rn file
Questo dovrebbe ordinare il file come di seguito:
10.Gryffindor
4.Hogwarts
3.Dumbledore
2.Harry
1.The sorting hat
Ordina per chiavi
Supponiamo di avere questo file:
test>>cat Hogwarts
Harry Malfoy Rowena Helga
Gryffindor Slytherin Ravenclaw Hufflepuff
Hermione Goyle Lockhart Tonks
Ron Snape Olivander Newt
Ron Goyle Flitwick Sprout
Per ordinare questo file usando una colonna come chiave usa l'opzione k:
test>>sort -k 2 Hogwarts
Questo ordinerà il file con la colonna 2 come chiave:
Ron Goyle Flitwick Sprout
Hermione Goyle Lockhart Tonks
Harry Malfoy Rowena Helga
Gryffindor Slytherin Ravenclaw Hufflepuff
Ron Snape Olivander Newt
Ora se dobbiamo ordinare il file con una chiave secondaria insieme alla chiave primaria, usa:
sort -k 2,2 -k 1,1 Hogwarts
Questo ordinerà innanzitutto il file con la colonna 2 come chiave primaria, quindi ordinerà il file con la colonna 1 come chiave secondaria:
Hermione Goyle Lockhart Tonks
Ron Goyle Flitwick Sprout
Harry Malfoy Rowena Helga
Gryffindor Slytherin Ravenclaw Hufflepuff
Ron Snape Olivander Newt
Se abbiamo bisogno di ordinare un file con più di 1 chiave, allora per ogni opzione -k dobbiamo specificare dove finisce l'ordinamento. Quindi, -k1,1 significa iniziare l'ordinamento nella prima colonna e terminare l'ordinamento nella prima colonna.
-t opzione
Nell'esempio precedente il file aveva il delimitatore predefinito - tab. In caso di ordinamento di un file con delimitatore non predefinito, è necessario l'opzione -t per specificare il delimitatore. Supponiamo di avere il file come di seguito:
test>>cat file
5.|Gryffindor
4.|Hogwarts
2.|Harry
3.|Dumbledore
1.|The sorting hat
Per ordinare questo file secondo la seconda colonna, utilizzare:
test>>sort -t "|" -k 2 file
Questo ordinerà il file come di seguito:
3.|Dumbledore
5.|Gryffindor
2.|Harry
4.|Hogwarts
1.|The sorting hat