Come ordinare per colonna in Linux

Quando si ha a che fare con un file che ha un gran numero di voci, l’ordinamento dei contenuti in un certo ordine può rendere le cose molto più semplici. In Linux, il comando sort, che utilizza l’algoritmo merge sort, viene utilizzato per questo scopo.

Il comando sort confronta tutte le righe dei file specificati e le ordina nell’ordine specificato in base alle chiavi di ordinamento. L’opzione -k, in particolare, viene utilizzata per ordinare su una determinata colonna.

In combinazione con l’opzione -k, dovrai anche conoscere altre opzioni come -n o -r per ordinare in modo efficiente per colonna. Abbiamo dettagliato questi e altri argomenti correlati nelle sezioni seguenti.

Se volete continuare a leggere questo post su "[page_title]" cliccate sul pulsante "Mostra tutti" e potrete leggere il resto del contenuto gratuitamente. ebstomasborba.pt è un sito specializzato in Tecnologia, Notizie, Giochi e molti altri argomenti che potrebbero interessarvi. Se desiderate leggere altre informazioni simili a [page_title], continuate a navigare sul web e iscrivetevi alle notifiche del blog per non perdere le ultime novità.

Seguir leyendo


Sommario

Ordina per colonna

La sintassi di base per il comando sort è sort . Per applicare questo, iniziamo con un esempio. Supponiamo di avere un file contacts.txt con le seguenti voci:

 Emma Smith US 51Edward Dyer UK 19Natalie Russell Canada 22Mathew Roberts Germany 21Ruth Abraham Australia 44Joseph Smith France 25

Il semplice utilizzo del comando sort contacts ordinerebbe le voci in ordine alfabetico in base alla prima colonna. Per ordinare in base a un’altra colonna specifica o in un altro ordine, dovrai utilizzare varie opzioni, che abbiamo elencato di seguito.

Opzione -k

Come affermato, l’opzione --key o -k viene utilizzata per ordinare su una colonna o un campo specifico. Ad esempio, nel nostro esempio, se volessi ordinare per nazionalità, useresti il ​​seguente comando per ordinare sulla terza colonna:
sort -k3 contacts

Questo comando prenderà in considerazione tutti i campi da 3 alla fine della riga. In alternativa, se hai usato sort -k3,4 contacts , questo specificherebbe di usare i campi da #3 a #4, cioè dal terzo al quarto campo.

Se stavi cercando di ordinare per cognomi nella seconda colonna, ci sono due scenari da considerare. Poiché ci sono voci identiche (Smith), sort utilizzerà la voce successiva per il tie-break. Cioè, nel caso dei due fabbri, la Francia verrebbe classificata al di sopra degli Stati Uniti.

Ma cosa succede se hai bisogno di ordinare per cognome, nome e solo allora nazionalità? In questi casi, puoi manipolare l’ordinamento specificando le chiavi più volte come segue:
sort -k2,2 -k1,1 contacts

Opzione -n

Se utilizzi i comandi mostrati sopra per ordinare per età nella quarta colonna, i risultati sembrerebbero imprecisi. Poiché l’ordinamento adotta un approccio lessicografico, cinquantuno si collocherebbe sopra il diciannove.

Per ordinare una colonna in base ai numeri, devi invece specificare l’opzione -n ​​come tale:
sort -n -k4 contacts

Opzione -r

Se stavi cercando di ordinare le voci in ordine inverso, dovresti usare l’opzione -r. Questo vale sia per i valori alfabetici che numerici, come mostrato di seguito:
sort -r -k1,1 contacts
sort -r -k3,4 contacts

Combinando le opzioni di base che abbiamo elencato finora, puoi eseguire complesse operazioni di ordinamento come l’ordinamento inverso sulla seconda colonna e l’ordinamento numerico sulla quarta colonna contemporaneamente:
sort -k2,2r -k4,4n contacts

Opzione -t

Uno spazio vuoto è il separatore di campo predefinito, ovvero il delimitatore con ordinamento. Ma i file CSV usano le virgole ( , ) per separare i valori. A seconda del delimitatore utilizzato, è possibile specificarlo utilizzando l’opzione -t. Ad esempio, se : è il delimitatore, dovresti specificarlo come tale:
sort -t ':' -k2 contact

Opzione -o

È possibile utilizzare l’opzione -o per salvare l’output ordinato in un file specificato come tale:
sort -k2 contacts -o sortedcontacts

Opzioni aggiuntive

Le opzioni sopra descritte sono quelle più comunemente utilizzate. Ma sort ha innumerevoli altri flag che potrebbero essere utili in scenari di nicchia come -b per ignorare gli spazi vuoti all’inizio del file, -M per ordinare i contenuti in base al mese di calendario o -c per verificare se i dati sono già ordinati. Poiché ce ne sono troppi da elencare qui, si consiglia di fare riferimento alla pagina man di sort per l’elenco completo di tali opzioni.