Il sort
Il comando viene utilizzato in Linux per stampare l'output di un file in un determinato ordine. Questo comando elabora i tuoi dati (il contenuto del file o l'output di qualsiasi comando) e li riordina nel modo specificato, il che ci aiuta a leggere i dati in modo efficiente. È molto utile nei casi in cui sono disponibili grandi quantità di informazioni e devono essere disposte in ordine alfabetico o numerico crescente o decrescente.
Nell'ordinamento alfabetico, il comando controlla la prima lettera di ogni riga e sposta le righe verso l'alto o verso il basso per disporre ogni riga in ordine alfabetico.
Nell'ordinamento numerico, il comando controlla i numeri su ciascuna riga e dispone le righe in ordine crescente o decrescente. Questa organizzazione visualizza un numero più piccolo nella parte superiore dell'output. C'è una piccola differenza in sort
e grep
comando. Il sort
comando dispone i dati in ordine alfabetico o numerico in ordine crescente o decrescente. Il grep
il comando mostra o nasconde solo le informazioni richieste che desideri.
In breve, sort
è un comando utile quando è necessario leggere un file o un elenco di grandi dimensioni che non è organizzato correttamente ed è diventato difficile e dispendioso in termini di tempo leggere questi file. Per risolvere questo problema, usa sort
comando in Linux per organizzare il contenuto di file o elenchi nel formato richiesto, che può aiutare a leggere i contenuti richiesti. Il sort
il comando presuppone che i dati siano in formato ASCII. Ci sono alcune opzioni utili per sort
che può modificare il comportamento dell'output. Alcuni degli esempi sono riportati di seguito, insieme alla sintassi del comando.
Sintassi
sort [OPTION]... [FILE]...
sort [OPTION]... --files0-from=F
Esempi
Nel primo esempio, utilizziamo sort
comando senza alcuna opzione. Questo organizza ogni riga in ordine alfabetico considerando la prima lettera di ogni riga. Nota:le righe che iniziano con una lettera minuscola vengono visualizzate prima delle righe che iniziano con una lettera maiuscola. Pertanto b (minuscolo) si trova nella prima posizione e B (maiuscolo) è nella seconda posizione.
$ cat test.txt
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Budhha
ChatrapatiShahuMaharaj
budhha
Ramaai
$ sort test.txt
budhha
Budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
A volte, abbiamo bisogno di dati in ordine inverso, cioè l'opposto dell'ordine alfabetico. Questo si ottiene usando il -r
opzione, come mostrato di seguito:
$ sort test.txt
budhha
Budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
$ sort -r test.txt
Ramaai
MahatmaJyotibaPhule
Dr.B.R.Ambedkar
ChatrapatiShahuMaharaj
Budhha
budhha
Come l'ordinamento delle lettere, possiamo sort
anche numericamente. Opzione -n
organizza il numero e inverte i risultati usando -r
opzione. Di seguito, utilizzando il -n
opzione, abbiamo organizzato i numeri in ordine crescente. Quindi il numero più piccolo è in alto e il numero più grande è in basso. Possiamo anche invertire l'output usando la stessa opzione sopra -r
con -n
e visualizza il numero più grande in alto.
$ cat numeric.txt
14
04
34
1891
938
378
2356
$ sort -n numeric.txt
04
14
34
378
938
1891
2356
$ sort -nr numeric.txt
2356
1891
938
378
34
14
04
Puoi sort
anche la colonna specifica. Per sort
una colonna particolare, usa il -k
opzione insieme a un numero di colonna. Tieni presente che nell'esempio seguente abbiamo utilizzato solo -k
opzione per selezionare la colonna, quindi il sort
il comando dispone i dati considerando la prima cifra della seconda colonna, non il numero intero della seconda colonna. Pertanto, la riga contenente la cifra 278 viene visualizzato prima della riga contenente la cifra 28 . Se utilizziamo il -n
opzione con -k
(per la selezione della colonna), i dati vengono visualizzati in ordine crescente e la sequenza sarà dal numero più piccolo al numero più grande (che è stato trattato nel secondo esempio):
$ cat file2.txt
Advika 1
Amit 30
Ajit 28
Abhi 278
Chirag 2
$ sort -k 2 file2.txt
Advika 1
Chirag 2
Abhi 278
Ajit 28
Amit 30
Qui, utilizziamo insieme il numero di colonna e l'ordinamento numerico. Nell'esempio seguente, ordiniamo numericamente la quinta colonna in ordine crescente.
$ ls -l
total 0
-rw-r--r-- 1 amwaghma hpcapp 42 Aug 20 19:30 file2.txt
-rw-r--r-- 1 amwaghma hpcapp 31 Aug 20 19:51 months.txt
-rw-r--r-- 1 amwaghma hpcapp 27 Aug 20 19:20 numeric.txt
-rw-r--r-- 1 amwaghma hpcapp 73 Aug 20 19:49 test.txt
$ ls -l | sort -nk 5
total 0
-rw-r--r-- 1 amwaghma hpcapp 27 Aug 20 19:20 numeric.txt
-rw-r--r-- 1 amwaghma hpcapp 31 Aug 20 19:51 months.txt
-rw-r--r-- 1 amwaghma hpcapp 42 Aug 20 19:30 file2.txt
-rw-r--r-- 1 amwaghma hpcapp 73 Aug 20 19:49 test.txt
Spesso ci sono molte voci duplicate in alcune righe. Questi possono essere eliminati usando il -u
opzione. Nell'esempio seguente, mostriamo il comportamento di -u
opzione per eliminare le voci duplicate:
$ cat test.txt
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
budhha
Ramaai
Dr.B.R.Ambedkar
$ sort test.txt
budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
$ sort -u test.txt
budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
C'è un'opzione interessante con cui possiamo verificare se il file è ordinato o meno. Usando il -c
opzione, il sort
comando segnala la prima riga fuori posto. Se il file esistente è già ordinato, sort
non dà alcun output. Controlla ogni riga una dopo l'altra e quando trova una riga non ordinata fornisce un messaggio. Nell'esempio seguente, il -c
opzione del sort
il comando aiuta a controllare ogni riga. Nel primo tentativo, confronta la prima lettera delle prime due righe, che trova corretta, ovvero la lettera D e la lettera M sono disposti in ordine alfabetico. Nel secondo tentativo, esamina la prima lettera della terza riga con la lettera iniziale delle prime due righe e rileva che la terza riga non è disposta in ordine alfabetico. Pertanto, stampa la prima riga non corrispondente del file con il numero di riga.
$ cat test.txt
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
ChatrapatiShahuMaharaj
budhha
Ramaai
$ sort test.txt
budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
$ sort -c test.txt
sort: test.txt:3: disorder: ChatrapatiShahuMaharaj
Proprio come i dati o le disposizioni numeriche, possiamo anche organizzare i mesi nel file. Fallo usando il -M
opzione e invertire l'ordine utilizzando il -r
opzione.
$ cat months.txt
February
December
January
July
$ sort -M months.txt
January
February
July
December
$ sort -Mr months.txt
December
July
February
January
Possiamo anche ordinare più di un file contemporaneamente utilizzando i rispettivi nomi di file come argomenti separati da uno spazio. L'output viene stampato uno dopo l'altro. Di seguito, ho usato il -n
opzione per ordinare il secondo file numerico.
$ cat test.txt numeric.txt
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
ChatrapatiShahuMaharaj
budhha
Ramaai
14
04
34
1891
938
378
2356
$ sort test.txt -n numeric.txt
budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
04
14
34
378
938
1891
2356
Puoi anche reindirizzare l'output ordinato a un altro file usando -o
opzione:
$ sort test.txt > sortfile
OR
$ sort -o sortfile test.txt
$ cat sortfile
budhha
Budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
Concludi
Utilizzando le opzioni precedenti, vediamo che l'ordinamento può essere eseguito con il contenuto del file o l'output di qualsiasi comando. Semplifica la disposizione di grandi set di dati in ordine crescente o decrescente. Ci sono così tante opzioni che possiamo usare per riorganizzare i dati in tutti i modi possibili. La cosa più sorprendente è che non abbiamo apportato modifiche al file originale. Pertanto i nostri dati sono al sicuro.
[ Download gratuito:cheat sheet dei comandi avanzati di Linux. ]