GNU/Linux >> Linux Esercitazione >  >> Linux

Ordina il comando in Linux con esempi

Il comando sort viene utilizzato nei sistemi Linux e Unix per disporre il contenuto del file in un ordine specifico. Usando il comando di ordinamento ordini righe, alfabeti e numeri in un file.

Il comando Ordina ha molte opzioni utili per invertire l'ordine, ordinare un file numericamente, ordinare una tabella per numero di colonna, controllare se un file è già ordinato e rimuovere i duplicati.

In questo tutorial, impariamo il comando sort in Linux con alcuni esempi pratici.

Comando di ordinamento e relativa sintassi

La riga seguente mostra la sintassi del comando di ordinamento:

sort [options] [files]

Prende l'input da STDIN per impostazione predefinita, ma può ordinare i file quando i nomi dei file sono forniti come argomento e può anche ordinare numericamente.

Il comando di ordinamento può essere invocato digitando solo sort nel terminale. Verrà quindi richiesto l'input da STDIN. Dopo aver inserito STDIN, ctrl+d viene inserito per contrassegnare la fine dell'immissione.

L'output seguente mostra che i dati di input da STDIN sono riorganizzati in ordine alfabetico.

$ sort
cappa
beta
delta
theta
alpha

alpha
beta
cappa
delta
theta

Ordina un file

Per impostazione predefinita, l'ordinamento considera tutti i caratteri come caratteri stringa. Anche i caratteri numerici vengono trattati come caratteri.

Innanzitutto, creiamo un file con dati numerici da ordinare. Il comando seguente crea un file 'numeric.txt' con dati numerici:

$ cat > numeric.txt
01
10
25
83
502
111

Ora, ordiniamo il file 'numeric.txt' come segue:

$ sort numeric.txt
01
10
111
25
502
83

L'output mostrato sopra non è quello che generalmente ci aspettiamo. Naturalmente, 111 è maggiore di 25 e anche 502 è maggiore di 83. Ma se vedi da vicino, i numeri sono ordinati nell'ordine del dizionario.

Ad esempio, per 111 e 25, confronta il primo carattere, 1 precede 2. Quindi 111 è posto prima di 25.

Ora controlliamo come si ordina quando il contenuto è alfabetico o parole. Il seguente file 'wordlist.txt' contiene parole che iniziano con maiuscolo e minuscolo e visualizza un elenco ordinato:

$ sort wordlist.txt
Aeroplane
ant
apple
bark
born
Box
Cat
tom
welcome

Opzioni di ordinamento

Il comando Ordina viene fornito con opzioni abbastanza buone per ordinare i contenuti dei file. Discutiamone alcuni come segue:

ordina -n :Per ordinare un file in modo numerico.
ordina -u :Sopprime le righe che ripetono un tasto precedente.
ordina -k :Ordinamento di una tabella per numero di colonna.
ordina -t SEP:utilizzare il separatore fornito per identificare i campi.
ordina -M :Ordina in base al mese di calendario specificato.
ordina -b :ignora gli spazi vuoti all'inizio della riga.
ordina -r :Ordinamento in ordine inverso.
ordina -o :Output in un nuovo file.

Ordina i file numericamente (opzione -n)

Se vogliamo ordinare numericamente i contenuti all'interno di un file, utilizziamo -n opzione.

Nell'esempio seguente, il file 'numeric.txt' contiene numeri e i dati sono ordinati in ordine numerico:

$ sort -n numeric.txt
01
10
25
83
111
502

Per invertire il numero nel file, usa una combinazione di -nr opzione.

Ad esempio:

$ sort -nr numeric.txt
502
111
83
25
10
01

Ordina e rimuovi le righe duplicate (opzione -u)

Per ordinare e rimuovere le righe duplicate da un file usa -u opzione. Il primo comando elencherà il contenuto del file duplicate.txt usando il comando cat e il secondo useremo -u opzione per rimuovere le righe duplicate.

Esempio:

$ cat duplicate.txt
hello
linux
lInux
Linux
raghu
world
zzz
zzz

Esempio di output in cui puoi vedere che le righe duplicate sono state rimosse dal file 'duplicate.txt':

$ sort -u duplicate.txt
hello
linux
lInux
Linux
raghu
world
zzz

Ordina e ignora maiuscole/minuscole (opzione -f)

Come molti altri strumenti Linux e Unix, il comando sort fa distinzione tra maiuscole e minuscole per impostazione predefinita. Ma se dobbiamo ignorare il caso, possiamo usare -f o --ignore-case opzione.

Ad esempio, in 'duplicate.txt', ci sono tre istanze della parola 'linux' in casi diversi. Per impostazione predefinita, vengono tutti stampati con -u opzione. Significa che non sono univoci per il comando di ordinamento.

Ma se usiamo -f opzione verrebbe ignorato come mostrato di seguito:

$ sort -f -u duplicate.txt
hello
linux
raghu
world
zzz

Ordina per colonna (opzione -k)

Il comando sort può ordinare qualsiasi tabella usando il numero di colonna usando -k opzione. Ad esempio, usa '-k3' per ordinare la terza colonna nella tabella.

Consideriamo di avere un sommario nel file 'population.txt' come segue:

$ cat population.txt
Kids 500 India
Youth 400 England
Senior 600 USA
Junior 9000 Australia
Pensioners 650 China

Di seguito ordiniamo la tabella utilizzando la colonna numero 2 nel file popolazione.txt:

$ sort -k2 population.txt
Youth 400 England
Kids 500 India
Senior 600 USA
Pensioners 650 China
Junior 9000 Australia

Ordina più colonne

In alcune situazioni, potrebbe essere necessario ordinare una tabella utilizzando più colonne. Prendiamo un esempio di un file contenente più colonne di dati.

Dopo il file 'columns.txt' contiene più colonne come elencato:

cat columns.txt
version1.2    10  25
version1.2    30  50
version1.1    10  30
version1.1    40  50
version1.2    40  50
version1.1    10  20
version1.1    5   8

Ora controlla il comando per ordinare le colonne 1, 2 e 3 in ordine numerico.

$ sort -k1,1 -k2,2n -k3,3n columns.txt
version1.1    5   8
version1.1    10  20
version1.1    10  30
version1.1    40  50
version1.2    10  25
version1.2    30  50
version1.2    40  50

Ordina per separatore di campo di colonna (delimitatore -t Opzione)

Per impostazione predefinita, il delimitatore per le colonne è uno spazio vuoto o una tabulazione. Ma possiamo usare un delimitatore personalizzato usando -t o --field-separator opzione in ordinamento.

Facciamo un esempio, usa i due punti (:) come delimitatore e il file '/etc/passwd' per ordinare.

Se vogliamo ordinare il file /etc/passwd in base agli UID, utilizziamo il seguente comando:

$ sort -n -t ':' -k3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
<---output truncated--->

Ordina per mese (opzione -M)

Usando -M opzione che puoi ordinare per mese. Se hai un file con mesi, ordina l'ordine dei comandi per mesi.

Ad esempio, il file 'months.txt' contiene un elenco di nomi di mesi.

$ cat months.txt
sep
august
july
dec
feb
may
jan

Ora useremo l'opzione -M per ordinare il file 'months.txt' per mese.

$ sort -M months.txt
jan
feb
may
july
august
sep
dec

Ordina i numeri leggibili dall'uomo (opzione -h)

L'ordinamento può ordinare numeri leggibili come 2K, 5G, 3M usando -h o --human-numeric-sort opzione.

Ad esempio, sotto l'elenco dei file il numero leggibile dall'uomo

$ cat human_numeric.txt
4G
2K
3M
1G
34K
52M
200M

Il comando seguente usa -h opzione per confrontare e ordinare i numeri leggibili dall'uomo.

$ sort -h human_numeric.txt
2K
34K
3M
52M
200M
1G
4G

Controlla l'input ordinato (opzione -c)

Il comando sort può controllare se l'input è già ordinato o non usando -c opzione. Se non è ordinato, restituisce la prima riga non ordinata.

$ sort -c /etc/passwd
sort: /etc/passwd:2: disorder: daemon:x:1:1:daemon:/usr/sbin:/bin/sh

Non viene stampato nulla per l'input ordinato:

$ sort /etc/passwd | sort -c
$ echo $?
0

Ordina con altri comandi

L'ordinamento è uno strumento di elaborazione del testo, quindi può essere utilizzato inserendo un input da un altro comando.

Nel comando seguente usiamo l'output del comando tail come input per l'ordinamento:

$ tail /etc/passwd | sort
altair:x:1001:1001:Altair Ibn La Ahad,,,,:/home/altair:/bin/bash
bind:x:120:132::/var/cache/bind:/bin/false
dnsmasq:x:121:65534:dnsmasq,,,:/var/lib/misc:/bin/false
mysql:x:115:129:MySQL Server,,,:/nonexistent:/bin/false
postfix:x:105:126::/var/spool/postfix:/bin/false
raghu:x:1000:1000:raghu,,,:/home/raghu:/bin/bash
smmsp:x:119:131:Mail Submission Program,,,:/var/lib/sendmail:/bin/false
smmta:x:118:130:Mail Transfer Agent,,,:/var/lib/sendmail:/bin/false
sshd:x:117:65534::/var/run/sshd:/usr/sbin/nologin
statd:x:116:65534::/var/lib/nfs:/bin/false

L'ordinamento può essere invertito con l'opzione -r.

Prendiamo un altro esempio per ordinare l'output del comando in un formato leggibile dall'uomo in base alle dimensioni, utilizzare il comando seguente:

$ du -h | sort -h

Conclusione

In questo tutorial, impariamo l'ordinamento Linux e la sua opzione per ordinare i contenuti dei file. Spero che ti sia piaciuto leggere e per favore commenta qui sotto se trovi altri esempi.


Linux
  1. Comando wc Linux con esempi

  2. Comando JQ in Linux con esempi

  3. ln Esempi di comandi in Linux

  4. file Esempi di comandi in Linux

  5. ordina Esempi di comandi in Linux

Comando Linux WC con esempi

Ordina il comando in Linux con esempi

Utilizzo del comando Linux mv con esempi

Comando di montaggio Linux con esempi

Comando gawk Linux con esempi

Linux make Command con esempi