Ricerca nel sito web

7 Interessanti esempi di comandi 'sort' di Linux - Parte 2


Nel nostro ultimo articolo abbiamo trattato vari esempi del comando "sort". Se te lo sei perso, puoi recuperarlo seguendo il link qui sotto. In questo post continueremo da dove ci eravamo interrotti nell'articolo precedente, per coprire i restanti aspetti del comando. In questo modo, entrambi gli articoli insieme fungeranno da guida completa al comando “sort” di Linux.

Prima di procedere oltre, crea un file di testo denominato "mese.txt" e compilalo 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 "mese.txt" in ordine cronologico in base all'abbreviazione o al nome del mese utilizzando l'opzione '-M' che istruisce il 'sort' per trattare i dati come date e ordinarli di conseguenza.

sort -M month.txt

16. Ordinamento dell'output in base alla dimensione del file in formato leggibile

Il seguente comando combina i comandi "ls" e "sort" per eseguire due attività. Innanzitutto, elenca il contenuto della directory home dell'utente in formato lungo e quindi collega questo elenco di directory al comando "sort" per stampare le dimensioni dei file in un formato leggibile dall'uomo, rendendo più semplice l'identificazione dei file più grandi e più piccoli in la directory.

ls -l /home/$USER | sort -h -k5

17. Controllo della coerenza dei file ordinati

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 verificare se 'sorted.txt' rimane nell'ordine corretto e se "lsl.txt" richiede l'ordinamento.

sort -c sorted.txt

Se restituisce 0, significa che il file è ordinato e non c'è conflitto.

sort -c lsl.txt

18. Gestione dei delimitatori quando non si utilizzano gli spazi nel file

Se il delimitatore (separatore) tra le parole è uno spazio, il comando "ordina" interpreta automaticamente qualsiasi cosa dopo uno spazio orizzontale come una nuova parola. Ma cosa succede quando il delimitatore non è uno spazio?

Considera un file di testo, il cui contenuto è separato da qualcosa di diverso dallo spazio come '|' o '\' o '+' o '.' o ...

Crea un file di testo in cui i contenuti sono separati da +. Utilizzare il comando cat per controllare il contenuto 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 si basa 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 in base alla dimensione del file

Ordina l'output del comando ls -l per la tua home directory 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 la parte di script sopra è probabile che otterrai un risultato diverso poiché il risultato viene generato in modo casuale.

Come risulta chiaramente dalla Regola numero – 2 dell'ultimo articolo, il comando sort preferisce le righe che iniziano con caratteri minuscoli rispetto a quelli maiuscoli. Controlla anche l'esempio 3 nell'ultimo articolo, dove la stringa "laptop" appare prima della stringa "LAPTOP".

20. Sostituzione delle preferenze di ordinamento predefinite

Come sovrascrivere la preferenza di ordinamento predefinita? Prima di poter sovrascrivere la preferenza di ordinamento predefinita, dobbiamo esportare la variabile di ambiente 'LC_ALL' in 'C'.

Per fare ciò, esegui il codice seguente nel prompt della riga di comando.

export LC_ALL=C

Quindi ordina il file di testo "tecmint.txt" sovrascrivendo la preferenza di ordinamento predefinita.

sort tecmint.txt

Non dimenticare di confrontare l'output con quello ottenuto nell'esempio 3 e puoi anche utilizzare l'opzione '-f' ovvero '--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 una volta sola?

Creiamo due file di testo, vale a dire "file1.txt" e "file2.txt", e popoliamoli con alcuni dati. In "file1.txt", aggiungeremo i 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 compila il secondo file "file2.txt" con alcuni dati come.

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 l'ordinamento di base in ordine alfabetico, ci siamo avventurati nell'ordinamento numerico e basato sulla data e abbiamo persino toccato i delimitatori personalizzati. Abbiamo anche imparato come sovrascrivere le preferenze di ordinamento predefinite per soddisfare le nostre esigenze.

Inoltre, abbiamo discusso le tecniche per verificare se un file è già ordinato e combinare le operazioni di "ordinamento" per più file di input. Con le conoscenze acquisite qui, hai a tua disposizione un potente strumento per ordinare e organizzare i dati in modo efficiente in un ambiente Linux.

Ci auguriamo che questo articolo sia stato approfondito e utile per le tue attività da riga di comando. Continua a esplorare, imparare e padroneggiare l'arte dell'"ordinamento" per migliorare le tue competenze su Linux.