Introduzione
Il sort
command è uno strumento per ordinare il contenuto dei file e stampare il risultato nell'output standard. Riordinare i contenuti di un file in modo numerico o alfabetico e disporre le informazioni in ordine crescente o decrescente migliora la leggibilità.
In questo tutorial imparerai a usare il sort
di Linux comando e vedere esempi utili.
Prerequisiti
- Un sistema che esegue Linux.
- Accesso a un terminale.
Sintassi di ordinamento Linux
Il sort
comando ha la seguente sintassi:
sort [options] filename
Esecuzione del sort
comando senza [options]
restituisce il contenuto del file e applica le regole di ordinamento predefinite per la locale corrente.
Le regole principali sono:
- Righe che iniziano con un numero vai prima delle righe che iniziano con una lettera , disposti in crescente ordine (1-10).
- Le righe che iniziano con lettere sono ordinate in crescente ordine alfabetico (A-Z).
Ad esempio, il seguente file ha più righe casuali:
Esegui sort
per disporre il contenuto del file nel modo predefinito:
L'esempio sopra mostra come il sort
il comando dispone le righe per impostazione predefinita quando non sono specificate opzioni.
Opzioni di ordinamento Linux
Specifica un'opzione per modificare l'sort
regole di ordinamento dei comandi. Le opzioni più utilizzate sono elencate nella tabella seguente:
Modulo di opzione breve | Modulo opzione lungo | Descrizione |
---|---|---|
-b | --ignore-leading-blanks | Cause sort per ignorare gli spazi iniziali. |
-d | --dictionary-order | Cause sort considerare solo spazi vuoti e caratteri alfanumerici. |
-f | --ignore-case | Ignora la regola di ordinamento delle maiuscole e minuscole e cambia tutte le lettere minuscole in maiuscole prima del confronto. |
/ | --files0-from=F | Legge l'input dai file specificati da NUL -nomi terminati nel F specificato file. Se F è - , sort legge i nomi dallo standard input. |
-M | --month-sort | Ordina le righe in base ai mesi (gennaio-dicembre). |
-h | --human-numeric-sort | Confronta i numeri leggibili dall'uomo (ad es. 2K 1G). |
-n | --numeric-sort | Confronta i dati in base a valori numerici di stringa. |
-R | --random-sort | Ordina i dati in base a un hash casuale di chiavi ma raggruppa insieme chiavi identiche. |
/ | --random-source=FILE | Ottiene byte casuali dal FILE specificato . |
-r | --reverse | Inverte i risultati del confronto. |
/ | --sort=WORD | Ordina i dati in base alla WORD specificata :numero-generale -g , umano-numerico -h , mese -M , numerico -n , -R casuale , versione -V . |
-c | --check, --check=diagnose-first | Controlla se l'input è già ordinato ma non lo ordina. |
/ | --debug | Annota la parte della riga utilizzata per l'ordinamento. |
-k | --key=KEYDEF | Ordina i dati utilizzando il KEYDEF specificato , che fornisce la posizione e il tipo della chiave. |
-m | --merge | Cause sort per unire file già ordinati. |
-o | --output=FILE | Reindirizza l'output a FILE invece di stamparlo in output standard. |
-t | --field-separator=SEP | Utilizza il SEP specificato separatore invece della transizione da non vuoto a vuoto. |
-z | --zero-terminated | Fa in modo che l'ordinamento utilizzi NUL come delimitatore di riga invece del carattere di nuova riga. |
/ | --help | Visualizza il file della guida con l'elenco completo delle opzioni ed esce. |
/ | --version | Emette la versione del programma ed esce. |
Esempi di ordinamento Linux
Di seguito sono riportati esempi di utilizzo del sort
comando per disporre il contenuto del file in diversi modi.
Esempio 1:salva l'output su file
Il sort
Il comando visualizza solo il contenuto di un file dopo averli organizzati, ma non cambia il file. Tuttavia, il -o
l'opzione ti consente di salvare il sort
output del comando in un file.
Ad esempio, il comando seguente ordina i dati nel default.txt e salva l'output nel sorted.txt file:
sort -o sorted.txt default.txt
L'esecuzione di cat restituisce il contenuto del nuovo file.
Un altro modo per salvare il sort
l'output del comando serve a reindirizzare l'output in un file:
sort default.txt > sorted.txt
Esempio 2:verifica dell'ordinamento nel file
Specificare il -c
opzione per verificare se il contenuto di un file è già stato ordinato. Se i contenuti sono già ordinati, non viene generato alcun output da sort
comando.
Tuttavia, quando sort
trova una riga non ordinata, emette un messaggio che segnala che la prima riga è fuori posto.
Ad esempio:
sort -c default.txt
Il comando emette un messaggio che riporta il numero e il contenuto della prima riga non ordinata.
Esempio 3:Ordina più file
Esistono due modi per ordinare più file:
Ordina più file contemporaneamente specificando i rispettivi nomi di file come argomenti, separati da spazi bianchi. I contenuti dei file vengono uniti, ordinati e stampati in output standard.
Ad esempio:
sort default1.txt default2.txt
Il comando concatena, ordina e stampa il contenuto di entrambi i file.
find
output del comando su sort
.
Un altro modo per ordinare più file contemporaneamente consiste nel reindirizzare l'output del comando trova a sort
e usa il --files0-from=
opzione nel sort
comando.
Specificare il -print0
opzione in find
per terminare il nome del file con NUL
carattere e assicurarsi che il programma legga correttamente l'elenco dei file.
Ad esempio:
find -name "default?.txt" -print0 | sort --files0-from=-
L'esempio sopra concatena e ordina default1.txt e default2.txt file.
Esempio 4:Ordina per campi
Per impostazione predefinita, sort
confronta il contenuto dell'intera riga e decide come ordinarla. Per confrontare in base a un sottoinsieme di dati, specifica quali campi confrontare utilizzando il -k
opzione.
Il -k
opzione accetta la seguente sintassi:
-k [ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .Cend ] ][ Modifier ] ]
FStart
. L'inizio della riga.CStart
. La prima colonna del campo.Fend
. La fine della linea.CEnd
. L'ultima colonna del campo.
La chiave di ordinamento include tutti i caratteri che iniziano con il campo specificato da FStart
variabile e la colonna specificata da CStart
variabile. La chiave termina con il campo specificato da FEnd
e la colonna specificata da CEnd
.
Non specificando Fend
assume l'ultimo carattere della riga come fine. Senza specificare CEnd
, l'ultimo carattere nel FEnd
campo è presupposto.
Se c'è spazio tra i campi, sort
li considera come campi separati.
Ad esempio, le righe nel file seguente contengono tre campi:
Ordina i dati in base al secondo campo eseguendo:
sort -k 2,2 school.txt
Il comando ordina i dati in base al secondo campo e ignora il primo campo.
Esempio 5:Ordina in ordine inverso
Usa il -r
opzione per ordinare i dati in ordine inverso, ovvero in ordine alfabetico inverso o numeri dal più alto al più basso.
Ad esempio, il seguente file viene ordinato con le regole di ordinamento predefinite:
sort default.txt
Specificando il -r
opzione inverte l'ordine di ordinamento:
sort -r default.txt
Esempio 6:rimozione di voci duplicate
Il -u
l'opzione consente sort
per rimuovere le voci duplicate da un file. Ad esempio, il seguente file ha diverse voci duplicate:
Specificando il -u
l'opzione ordina i dati e rimuove le righe duplicate:
sort -u test.txt
Esempio 7:Ordina per mesi
Specificare il -M
opzione per organizzare i dati in base ai mesi elencati in un file.
Per dimostrare l'ordinamento per mesi, crea un file popolato dall'output del comando ls:
ls -l > month-sorting.txt
Ordina i dati da ls -l
output per mesi eseguendo il comando seguente:
sort -Mk6 month-sorting.txt
Il comando ordina il contenuto del file in base al sesto campo contenente il mese di creazione del file .
Esempio 8:ordinamento casuale dei dati
Usa il -R
opzione per disporre i dati in modo casuale senza applicare alcun criterio di ordinamento.
Ad esempio, il seguente file contiene diverse righe ordinate numericamente:
Mescola l'ordine delle righe con il seguente comando:
sort -R ordered.txt
L'output mostra che i dati sono ora ordinati casualmente.
Esempio 9:specifica un delimitatore
sort
separa i campi in una riga utilizzando spazi bianchi (spazi o tabulazioni) come delimitatori di campo. Specificare il -t
opzione per modificare il delimitatore di campo con un carattere diverso.
Ad esempio, il seguente file contiene più campi, inclusi il nome di una persona, il titolo di lavoro e il luogo di residenza:
L'ordinamento del file per luogo di residenza senza modificare il delimitatore non funziona perché alcune città hanno uno spazio nel mezzo del loro nome. Lo spazio rende sort
interpreta il nome della città come due campi invece di uno.
Cambia il delimitatore con una virgola (,
) per ordinare correttamente il contenuto del file:
sort -t, -k4 school.txt
La modifica del delimitatore produce l'output desiderato.
Esempio 10:Ordina un output di flusso
Un altro modo per fornire input al sort
il comando consiste nell'usare la pipe (|
) operatore. Convogliamento in sort
gli consente di organizzare l'output di un altro comando e, facoltativamente, di salvare i risultati in un file.
L'esempio seguente mostra come reindirizzare ls
output del comando in sort
e ordina i contenuti in base alla dimensione del file:
ls -l /home/$USER | sort -nk5
Il -nk5
le opzioni specificano l'ordinamento numerico nel quinto campo .