Ricerca nel sito web

14 esempi utili del comando 'sort' di Linux - Parte 1


Il comando "sort" è un programma Linux utilizzato per stampare righe di file di testo di input e concatenare tutti i file in ordine ordinato. Il comando di ordinamento richiede uno spazio vuoto come separatore di campo e l'intero file di input come chiave di ordinamento. È importante notare che il comando sort in realtà non ordina i file ma stampa solo l'output ordinato finché non reindirizzi l'output.

Questo articolo mira a fornire una visione approfondita del comando "sort" di Linux con 14 utili esempi pratici che mostrano come utilizzare il comando sort in Linux.

1. Creazione di un file di testo con contenuto specificato

Per prima cosa creeremo un file di testo, denominato 'tecmint.txt', che verrà utilizzato per eseguire gli esempi di comandi 'sort' nella nostra directory di lavoro per questa attività è ' /home/$USER/Desktop/tecmint'.

L'opzione '-e' nel comando seguente abilita l'interpretazione della barra rovesciata e /n dice al comando echo di scrivere ogni stringa su una nuova riga.

echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt

2. Visualizza il contenuto del file

Prima di iniziare con il comando "sort", diamo un'occhiata al contenuto del file e a come appare utilizzando il seguente comando cat.

cat tecmint.txt

3. Ordinamento del contenuto del file

Il comando "sort tecmint.txt" viene utilizzato per riorganizzare le righe nel file in ordine alfabetico crescente, se sono presenti righe duplicate, manterrà una copia di ciascuna riga univoca.

sort tecmint.txt

Nota: il comando precedente non ordina il contenuto del file di testo ma visualizza solo l'output ordinato sul terminale.

4. Reindirizzamento dell'output ordinato su un nuovo file

Il seguente comando viene utilizzato per ordinare le righe del file di testo "tecmint.txt" in ordine alfabetico e quindi reindirizza l'output ordinato a un nuovo file denominato "sorted.txt ", il che significa che il file originale rimane invariato e il contenuto ordinato viene archiviato in un file separato.

Per verificare il contenuto, utilizzare il comando cat.

sort tecmint.txt > sorted.txt
cat sorted.txt

5. Ordinamento del contenuto del file in ordine inverso

Il comando seguente viene utilizzato per ordinare le righe del file di testo "tecmint.txt" in ordine inverso, il che significa che le righe verranno disposte in ordine alfabetico discendente e l'output ordinato verrà quindi reindirizzato a un nuovo file denominato "reversesorted.txt"

sort -r tecmint.txt > reversesorted.txt
cat reversesorted.txt

6. Salvataggio dell'elenco di file e directory

Il seguente comando viene utilizzato per elencare il contenuto della directory home dell'utente (“/home/$USER“) in una visualizzazione dettagliata e di lungo formato utilizzando il comando ls e quindi reindirizza questo elenco di directory a un file di testo denominato "lsl.txt" situato sul desktop dell'utente, in particolare nella directory "tecmint".

ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt
cat lsl.txt

Ora esploreremo esempi di ordinamento dei contenuti in base a campi diversi dai caratteri iniziali predefiniti.

7. Ordinamento del contenuto del file in base al secondo campo

Il seguente comando viene utilizzato per ordinare il contenuto del file "lsl.txt" in base ai valori nel secondo campo di ciascuna riga. L'opzione '-n' indica un ordinamento numerico, trattando il secondo campo come numeri anziché come testo.

L'opzione '-k2' specifica che vogliamo ordinare in base al secondo campo. Eseguendo questo comando, otterrai un elenco ordinato delle righe in "lsl.txt", con i criteri di ordinamento costituiti dai valori numerici nel secondo campo di ciascuna riga.

sort -nk2 lsl.txt

8. Ordinamento del contenuto del file in base al nono campo

Il seguente comando viene utilizzato per ordinare le righe nel file "lsl.txt" in base ai valori nel nono campo di ciascuna riga in ordine crescente. L'opzione '-k9' specifica che l'ordinamento dovrebbe essere effettuato in base al nono campo.

sort -k9 lsl.txt

9. Ordina i file per dimensione

Il seguente comando combina i comandi 'ls' e 'sort' per elencare il contenuto della directory home dell'utente in un formato di elenco lungo e quindi reindirizza l'elenco della directory a 'sort -nk5', che ordina l'elenco in base ai valori nella quinta colonna, che rappresenta le dimensioni dei file.

ls -l /home/$USER | sort -nk5

10. Rimozione delle righe duplicate nel file

Il seguente comando ordina le righe nel file “tecmint.txt” in ordine alfabetico crescente e rimuove eventuali righe duplicate utilizzando l'opzione '-u', che sta per “unique", e garantisce che le righe univoche vengano conservate nell'output ordinato.

cat tecmint.txt
sort -u tecmint.txt

Regole finora (quello che abbiamo osservato):

  • Le righe che iniziano con i numeri sono preferite nell'elenco e si trovano in alto finché non diversamente specificato (-r).
  • Le righe che iniziano con lettere minuscole vengono preferite nell'elenco e si trovano in alto finché non diversamente specificato (-r).
  • I contenuti sono elencati in base alla presenza degli alfabeti nel dizionario finché non diversamente specificato (-r).
  • Il comando Ordina per impostazione predefinita tratta ogni riga come una stringa e quindi la ordina in base alla presenza di alfabeti nel dizionario (preferibilmente numerico; vedere regola - 1) fino a quando diversamente specificato.

11. Reindirizzamento dell'elenco delle directory su file

Il seguente comando elenca il contenuto della directory home dell'utente in formato lungo, inclusi file e directory nascosti, quindi reindirizza l'elenco delle directory a un file di testo denominato "lsla.txt" situato sul desktop dell'utente all'interno la directory "tecmint".

ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt
cat lsla.txt

Chi ha familiarità con il comando ls capisce che 'ls -lA' è equivalente a 'ls -l' più i file nascosti. Di conseguenza, la maggior parte dei contenuti di questi due comandi sarà la stessa.

12. Ordinamento del contenuto dei file

Il comando seguente ordina il contenuto di due file di testo, 'lsl.txt' e 'lsla.txt', in ordine alfabetico crescente, quindi combina e visualizza il contenuto ordinato in il terminale.

sort lsl.txt lsla.txt

Notare la ripetizione di file e cartelle.

13. Rimozione delle righe duplicate nel file

Il seguente comando unisce e ordina il contenuto di due file di testo, "lsl.txt" e "lsla.txt", in ordine alfabetico crescente rimuovendo eventuali righe duplicate utilizzando il comando Opzione '-u', che garantisce che le righe univoche vengano conservate nell'output ordinato.

sort -u lsl.txt lsla.txt

Si noti che i duplicati sono stati omessi dall'output. Inoltre, puoi salvare l'output in un nuovo file reindirizzandolo.

14. Ordinamento dell'output per più campi utilizzando il delimitatore personalizzato

Il seguente comando combina i comandi 'ls' e 'sort' per elencare il contenuto della directory home dell'utente in formato lungo e quindi reindirizza l'elenco delle directory al 'sort', che ordina l'output in base a colonne e campi specifici.

ls -l /home/$USER | sort -t "," -nk2,5 -k9

Ecco una ripartizione del comando:

  • -t "," – specifica che una virgola (",") viene utilizzata come delimitatore di campo.
  • -nk2,5 – indica l'ordinamento in base a un valore numerico nelle colonne da 2 a 5, che in genere rappresentano autorizzazioni e dettagli sulla proprietà.
  • -k9 – ordina ulteriormente il risultato in base alla nona colonna, che rappresenta le dimensioni del file.

È tutto per ora. Nel prossimo articolo approfondiremo per voi esempi più dettagliati del comando sort.

Continua a condividere, commentare, mettere mi piace e aiutaci a raggiungere un pubblico più ampio.