GNU/Linux >> Linux Esercitazione >  >> Linux

Casella degli strumenti Sysadmin:come utilizzare il comando di ordinamento per elaborare il testo in Linux

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. ]


Linux
  1. Come usare il comando sed di Linux

  2. Come usare il comando Linux grep

  3. Come usare il comando cronologia in Linux

  4. Come utilizzare il comando id in Linux

  5. Come utilizzare il comando "schermo" in Linux

Come utilizzare il comando uniq per elaborare gli elenchi in Linux

Come utilizzare il comando fd sul sistema Linux

Come utilizzare il comando wget in Linux?

Come usare il comando xargs in Linux?

Come utilizzare il comando RPM in Linux

Come utilizzare il comando which in Linux