Nel nostro ultimo articolo, abbiamo trattato vari esempi del comando ‘sort‘. Se te lo sei perso, puoi recuperare seguendo il link qui sotto. In questo post, continueremo da dove abbiamo lasciato nell’articolo precedente, per coprire gli altri aspetti del comando. In questo modo, entrambi gli articoli insieme serviranno come guida completa al comando ‘sort‘ di Linux.
Prima di procedere ulteriormente, per favore crea un file di testo chiamato ‘month.txt‘ e popolalo con i dati forniti di seguito.
echo -e "mar\ndec\noct\nsep\nfeb\naug" > month.txt cat month.txt
15. Ordinamento del Contenuto del File per Mese
Il seguente comando ordina il contenuto del file “month.txt” in ordine cronologico in base all’abbreviazione o al nome del mese utilizzando l’opzione '-M'
che istruisce il comando ‘sort‘ a trattare i dati come date e ordinarli di conseguenza.
sort -M month.txt
16. Ordinamento dell’Output per Dimensione del File in Formato Leggibile dall’Uomo
Il seguente comando combina i comandi ‘ls‘ e ‘sort‘ per eseguire due compiti. Prima, elenca i contenuti della directory home dell’utente in formato lungo e poi, passa questo elenco di directory al comando ‘sort’ per stampare le dimensioni dei file in un formato leggibile dall’uomo, rendendo più facile identificare i file più grandi e più piccoli nella directory.
ls -l /home/$USER | sort -h -k5
17. Verifica dei File Ordinati per Coerenza
Nell’articolo precedente, abbiamo generato due file di testo: ‘sorted.txt‘ nell’esempio numero 4 e ‘lsl.txt‘ nell’esempio numero 6. Siamo consapevoli che ‘sorted.txt’ è già ordinato, mentre ‘lsl.txt’ non lo è.
Per verificare lo stato di ordinamento di entrambi i file, utilizzeremo il comando ‘sort’, che ci permetterà di confermare se ‘sorted.txt’ rimane nell’ordine corretto e se ‘lsl.txt’ richiede un ordinamento.
sort -c sorted.txt
Se restituisce 0, significa che il file è ordinato e non ci sono conflitti.
sort -c lsl.txt
18. Gestione dei Delimitatori Quando Non Si Utilizzano Spazi nel File
Se il delimitatore (separatore) tra le parole è uno spazio, il comando ‘sort’ interpreta automaticamente tutto ciò che segue uno spazio orizzontale come una nuova parola. Ma cosa succede quando il delimitatore non è uno spazio?
Considera un file di testo, i cui contenuti sono separati da qualsiasi cosa diversa da uno spazio come ‘|’ o ‘\’ o ‘+’ o ‘.’ o ‘…</code.’
Crea un file di testo in cui i contenuti sono separati da ‘+’. Utilizza il comando ‘cat’ per controllare i contenuti del file.
echo -e "21+linux+server+production\n11+debian+RedHat+CentOS\n131+Apache+Mysql+PHP\n7+Shell Scripting+python+perl\n111+postfix+exim+sendmail" > delimiter.txt
$ cat delimiter.txt
Ora ordina questo file in base al primo campo che è numerico.
sort -t '+' -nk1 delimiter.txt
Il secondo è basato sul quarto campo che non è numerico.
Se il delimitatore è Tab puoi utilizzare $'\t'
al posto di '+'
, come mostrato nell’esempio sopra.
19. Ordinamento Casuale dell’Output per Dimensione File
Ordina l’output del comando ls -l per la tua directory home in base alla quinta colonna, che rappresenta la ‘quantità di dati’, in ordine casuale.
ls -l /home/avi/ | sort -k5 -R
Ogni volta che esegui il pezzo di script sopra è probabile che ottieni un risultato diverso poiché il risultato è generato casualmente.
Come chiarito dalla Regola numero – 2 dell’ultimo articolo, il comando sort preferisce le righe che iniziano con caratteri minuscoli rispetto a quelli maiuscoli. Controlla anche esempio 3 nell’ultimo articolo, dove la stringa ‘laptop‘ appare prima della stringa ‘LAPTOP‘.
20. Sovrascrittura delle Preferenze di Ordinamento Predefinite
Come sovrascrivere le preferenze di ordinamento predefinite? Prima di poter sovrascrivere le preferenze di ordinamento predefinite, è necessario esportare la variabile d’ambiente 'LC_ALL'
a 'C'
.
Per fare ciò, esegui il codice qui sotto nel prompt del terminale.
export LC_ALL=C
E quindi ordina il file di testo ‘tecmint.txt‘ sovrascrevendo le preferenze di ordinamento predefinite.
$ sort tecmint.txt
Non dimenticare di confrontare l’output con quello ottenuto nell’esempio 3 e puoi anche utilizzare l’opzione ‘-f
‘ alias ‘--ignore-case
‘ per ottenere un output molto organizzato.
$ sort -f tecmint.txt
21. Combinazione di Due File di Input in un’unica Operazione
Che ne dici di eseguire ‘sort‘ su due file di input e unirli in un’unica volta?
Creiamo due file di testo, chiamati ‘file1.txt‘ e ‘file2.txt‘, e popoliamoli con alcuni dati. In ‘file1.txt‘, aggiungeremo dei numeri come mostrato di seguito. Utilizzeremo anche il comando cat per ispezionare il contenuto del file
echo -e “5 Reliable\n2 Fast\n3 Secure\n1 open-source\n4 customizable” > file1.txt cat file1.txt
E popoliamo il secondo file ‘file2.txt‘ con alcuni dati.
echo -e “3 RedHat\n1 Debian\n5 Ubuntu\n2 Kali\n4 Fedora” > file2.txt cat file2.txt
Ora ordina e unisci l’output di entrambi i file.
join <(sort -n file1.txt) <(sort file2.txt)
Conclusione
In conclusione, questo articolo ha esplorato vari aspetti del comando ‘sort‘ in Linux. Abbiamo iniziato con la classificazione di base in ordine alfabetico, ci siamo avventurati nella classificazione numerica e basata sulle date, e abbiamo persino toccato gli argomenti relativi ai delimitatori personalizzati. Abbiamo anche appreso come sovrascrivere le preferenze di classificazione predefinite per adattarle alle nostre esigenze.
Inoltre, abbiamo discusso delle tecniche per verificare se un file è già ordinato e per combinare le operazioni di ‘sort‘ per file di input multipli. Con la conoscenza acquisita qui, hai a disposizione uno strumento potente per ordinare e organizzare i dati in modo efficiente in un ambiente Linux.
Speriamo che questo articolo sia stato illuminante e utile per i tuoi sforzi a riga di comando. Continua ad esplorare, imparare e padroneggiare l’arte del ‘sort‘ per migliorare le tue competenze su Linux.
Source:
https://www.tecmint.com/linux-sort-command-examples/