14 esempi utili del comando ‘Sort’ in Linux – Parte 1

Il comando ‘sort’ è un programma Linux utilizzato per stampare righe di file di testo in ingresso e concatenare tutti i file in ordine ordinato. Il comando di ordinamento assume spazi vuoti come separatore di campo e l’intero file di input come chiave di ordinamento. È importante notare che il comando di ordinamento non ordina effettivamente i file ma stampa solo l’output ordinato finché non ridirezioni l’output.

Questo articolo mira a una profonda comprensione del comando ‘sort’ di Linux con 14 utili esempi pratici che mostrano come utilizzare il comando di ordinamento in Linux.

1. Creare un file di testo con contenuto specificato

Innanzitutto, creeremo un file di testo, chiamato ‘tecmint.txt’, che verrà utilizzato per eseguire esempi di comando ‘sort’ nella nostra directory di lavoro per questo compito è ‘ /home/$USER/Desktop/tecmint’.

L’opzione ‘-e’ nel comando sottostante abilita l’interpretazione della barra rovesciata e /n indica 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.3. Ordinamento del contenuto del file

cat tecmint.txt

3. Ordinamento del Contenuto del File

Il comando “sort tecmint.txt” viene utilizzato per riordinare le righe nel file in ordine alfabetico crescente, se ci sono righe duplicate, ne manterrà una copia di ogni riga unica.

sort tecmint.txt

Note: The above command doesn’t sort the contents of the text file but only displays the sorted output on the terminal.

4. Reindirizzamento dell’Output Ordinato a 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 memorizzato 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 seguente comando viene utilizzato per ordinare le righe del file di testo “tecmint.txt” in ordine inverso, il che significa che le righe verranno ordinate in ordine alfabetico decrescente e l’output ordinato viene quindi reindirizzato a un nuovo file denominato “reversesorted.txt

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

6. Salvataggio della Lista di File e Directory

Il seguente comando viene utilizzato per elencare il contenuto della directory home dell’utente (“/home/$USER“) in una vista dettagliata e in formato lungo utilizzando il comando ls e quindi reindirizza questo elenco di directory a un file di testo chiamato “lsl.txt” situato sulla scrivania 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 ‘Contenuto dei 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 ogni riga. L’opzione '-n' indica un ordinamento numerico, trattando il secondo campo come numeri piuttosto che testo.

L’opzione '-k2' specifica che vogliamo ordinare in base al secondo campo. Eseguendo questo comando, otterrete un elenco ordinato delle righe in “lsl.txt“, con il criterio di ordinamento che è il valore numerico nel secondo campo di ogni 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 ogni riga in ordine crescente. L’opzione '-k9' specifica che l’ordinamento deve essere effettuato in base al nono campo.

sort -k9 lsl.txt

9. Ordinamento dei file per dimensione del file

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

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

10. Rimozione di righe duplicate in un 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 “unico” e garantisce che vengano mantenute solo le righe uniche nell’output ordinato.

$ cat tecmint.txt
$ sort -u tecmint.txt

Regole fino a ora (ciò che abbiamo osservato):

  • Le righe che iniziano con numeri sono preferite nell’elenco e si trovano in cima fino a quando non viene specificato diversamente (-r).
  • Le righe che iniziano con lettere minuscole sono preferite nell’elenco e si trovano in cima fino a quando non viene specificato diversamente (-r).
  • I contenuti vengono elencati in base alla comparsa delle lettere nel dizionario fino a quando non viene specificato diversamente (-r).
  • Il comando sort, per impostazione predefinita, tratta ogni riga come una stringa e poi la ordina in base alla comparsa delle lettere nel dizionario (Numeri preferiti; vedi regola – 1) fino a quando non viene specificato diversamente.

11. Reindirizzamento dell’elenco della directory a un file

Il seguente comando elenca il contenuto della directory home dell’utente in formato lungo, compresi i file e le directory nascosti e quindi redirige l’elenco delle directory in un file di testo chiamato “lsla.txt” situato sulla scrivania dell’utente all’interno della directory “tecmint“.

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

Quelli familiari con il comando ls capiscono che 'ls -lA' è equivalente a 'ls -l' più file nascosti. Di conseguenza, la maggior parte dei contenuti in questi due comandi sarà la stessa.

12. Ordinamento dei contenuti dei file

Il seguente comando ordina i contenuti di due file di testo, ‘ lsl.txt ‘ e ‘ lsla.txt ‘, in ordine alfabetico ascendente e quindi combina e visualizza il contenuto ordinato nel terminale.

$ sort lsl.txt lsla.txt

Nota la ripetizione di file e cartelle.

13. Rimozione delle righe duplicate in un file

Il seguente comando unisce e ordina i contenuti di due file di testo, ‘ lsl.txt ‘ e ‘ lsla.txt ‘, in ordine alfabetico ascendente mentre rimuove eventuali righe duplicate utilizzando l’opzione '-u', che garantisce che le righe uniche siano mantenute nell’output ordinato.

$ sort -u lsl.txt lsla.txt

Nota che le duplicazioni sono state omesse dall’output. Inoltre, puoi salvare l’output in un nuovo file reindirizzandolo.

14. Ordinamento dell’output per più campi utilizzando delimitatori personalizzati

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

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

Ecco una spiegazione del comando:

  • -t "," – specifica che una virgola ‘(",")‘ viene utilizzata come delimitatore di campo.
  • -nk2,5 – indica l’ordinamento per valore numerico nelle colonne 2 a 5, che di solito rappresentano i dettagli dei permessi e della proprietà.
  • -k9 – ordina ulteriormente il risultato in base alla nona colonna, che rappresenta le dimensioni dei file.

Questo è tutto per ora. Nel prossimo articolo, approfondiremo esempi più dettagliati del comando sort per te.

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

Source:
https://www.tecmint.com/sort-command-linux/