mercoledì 11 giugno 2014

sort - sort lines of text files (e non solo)

Salve!

Sono in programma nuovi progetti. Un corso di SED, che dovrebbe iniziare tra un paio di settimane. Sono previsti 35 tutoriali. E  il "Man illustrato", che inizia oggi.  Nel "man illustrato" saranno passati in rassegna i comandi più importanti. Speriamo bene :)

Oggi mettiamo alla prova il comando sort, che ordina le righe in un file secondo il criterio specificato. Questo è ciò che si dice. Ma sort fa di più! E ora lo vediamo insieme.

Sort, senza parametri, ordina alfabeticamente.

$ sort file.txt


Con il parametro -r, sort, inverte il senso di ordinamento (alfabetico o numerico)

$ sort -r file.txt


Con il parametro -n ordina numericamente (e in modo progressivo) invece che alfabeticamente.

$ sort -n file.txt


Con i parametri -n e -r, sort, inverte l'ordinamento dei valori numerici.

$ sort -nr file.txt


Con il parametro -f, sort, non distingue tra caratteri maiuscoli e minuscoli. (case insensitive)

$ sort -f file.txt


Con il parametro -M ordina i mesi.

$ sort -M file.txt


Con il parametro -h, sort, ordina in base alle grandezze (kilobyte, megabyte, gigabyte, etc)

$ sort -h file.txt


Ora prendiamo in cosiderazione due parametri: -t e -k.

-t specifica il carattere da usare come separatore di campo (invece del valore predefinito), in caso di definizione di chiavi di ordinamento, -k.

-k è, appunto, la chiave di ordinamento. Vabbè, facciamo qualche esempio.

Partiamo da un file di testo, test_5, il cui contenuto è il seguente:


In questo esempio il separatore di campo è "|", quindi si avrà -t"|". Ora, nei tre esempi che seguono, userò i parametri -k2, -k3, -k1. Ciò sta a significare che, nel caso di -k2, la tabella sarà ordinata in base al secondo campo. Nel caso di k3, in base al terzo campo, nel caso di k1, in base al primo campo.

$ sort -n -t"|" -k2 test_5 #(primo esempio)
$ sort -t"|" -k3 test_5  #(secondo esempio)
$ sort -t"|" -k1 test_5  #(terzo esempio

Da notare che il parametro -n è stato usato solo nel primo esempio. Ora dovreste sapere il perchè.

Ora prendiamo due file, test_6 e test_7, in ognuno di essi mettiamo una colonna di numeri, e li diamo poi in pasto a sort perchè li ordini e ne restituisca il risultato a schermo.

$ sort -n file_1 file_2


Ovviamente è possibile creare anche un terzo file che contenga la tabella ordinata, in tal caso

$ sort -n file_1 file_2 -o file_3

Il parametro - o sta, ovviamente, per output.

Chiudiamo con il parametro -u. Il parametro -u elimina le linee duplicate.

$ sort -u file.txt

Non vi perdete la prossima puntata di "Man Illustrato". Ciao ;)

Nessun commento:

Posta un commento