GNU/Linux >> Tutoriels Linux >  >> Linux

Commande de tri sous Linux avec des exemples

La commande sort est utilisée dans les systèmes Linux et Unix pour organiser le contenu du fichier dans un ordre spécifique. En utilisant la commande de tri, vous ordonnez les lignes, l'alphabet et les chiffres dans un fichier.

La commande de tri a de nombreuses options utiles pour inverser l'ordre, trier un fichier numériquement, trier un tableau par numéro de colonne, vérifier si un fichier est déjà trié et supprimer les doublons.

Dans ce didacticiel, nous découvrons la commande de tri sous Linux avec quelques exemples pratiques.

Commande de tri et sa syntaxe

La ligne suivante montre la syntaxe de la commande de tri :

sort [options] [files]

Il prend l'entrée de STDIN par défaut mais peut trier les fichiers lorsque les noms de fichiers sont fournis en tant qu'argument et il peut également trier numériquement.

La commande de tri peut être appelée en tapant simplement sort dans l'aérogare. Il demandera alors l'entrée de STDIN. Après avoir entré STDIN, ctrl+d est saisi pour marquer la fin de la saisie.

La sortie suivante montre que les données d'entrée de STDIN sont réorganisées par ordre alphabétique.

$ sort
cappa
beta
delta
theta
alpha

alpha
beta
cappa
delta
theta

Trier un fichier

Par défaut, le tri traite tous les caractères comme des caractères de chaîne. Les caractères numériques sont également traités comme des caractères.

Tout d'abord, nous créons un fichier avec des données numériques à trier. La commande suivante crée un fichier 'numeric.txt' avec des données numériques :

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

Maintenant, trions le fichier 'numeric.txt' comme suit :

$ sort numeric.txt
01
10
111
25
502
83

La sortie indiquée ci-dessus n'est pas ce à quoi nous nous attendons généralement. Bien entendu, 111 est supérieur à 25 et 502 est également supérieur à 83. Mais si vous regardez de près, les nombres sont triés dans l'ordre du dictionnaire.

Par exemple, pour 111 et 25, comparez le premier caractère, 1 précède 2. Ainsi 111 est placé avant 25.

Voyons maintenant comment il trie lorsque le contenu est composé d'alphabets ou de mots. Le fichier suivant 'wordlist.txt' contient des mots commençant par des majuscules et des minuscules et affiche une liste triée :

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

Options de tri

La commande de tri est livrée avec de très bonnes options pour trier le contenu des fichiers. Discutons-en quelques-uns comme suit :

trier -n :Pour trier un fichier numériquement.
trier -u :Supprime les lignes qui répètent une touche antérieure.
trier -k :Trier un tableau par numéro de colonne.
trier -t SEP :utilisez le séparateur fourni pour identifier les champs.
trier -M :Trier selon le mois calendaire spécifié.
trier -b :Ignorer les espaces en début de ligne.
trier -r :Tri dans l'ordre inverse.
trier -o :sortie dans un nouveau fichier.

Trier le fichier numériquement (option -n)

Si nous voulons trier numériquement le contenu d'un fichier, nous utilisons -n option.

Dans l'exemple suivant, le fichier 'numeric.txt' contient des nombres et les données sont triées par ordre numérique :

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

Pour inverser le numéro dans le fichier, vous utilisez une combinaison de -nr option.

Par exemple :

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

Trier et supprimer les lignes en double (option -u)

Pour trier et supprimer les lignes en double d'un fichier, utilisez -u option. La première commande listera le contenu du fichier duplicate.txt en utilisant la commande cat et la seconde nous utiliserons -u option pour supprimer les lignes en double.

Exemple :

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

Exemple de sortie où vous pouvez voir que les lignes en double sont supprimées du fichier 'duplicate.txt' :

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

Trier et ignorer la casse (option -f)

Comme beaucoup d'autres outils Linux et Unix, la commande sort est sensible à la casse par défaut. Mais si nous devons ignorer la casse, nous pouvons utiliser -f ou --ignore-case option.

Par exemple, dans le 'duplicate.txt', il y a trois occurrences du mot 'linux' dans des cas différents. Par défaut, ils sont tous imprimés avec -u option. Cela signifie qu'ils ne sont pas uniques pour la commande de tri.

Mais si nous utilisons -f option, il serait ignoré comme indiqué ci-dessous :

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

Trier par colonne (option -k)

La commande sort peut trier n'importe quelle table en utilisant le numéro de colonne en utilisant -k option. Par exemple, utilisez '-k3' pour trier la troisième colonne du tableau.

Considérons que nous avons une table des matières dans le fichier 'population.txt' comme suit :

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

Dans ce qui suit, nous trions le tableau en utilisant la colonne numéro 2 dans le fichier population.txt :

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

Trier plusieurs colonnes

Dans certaines situations, vous devrez peut-être trier un tableau à l'aide de plusieurs colonnes. Prenons un exemple de fichier contenant plusieurs colonnes de données.

Après le fichier "columns.txt" contient plusieurs colonnes comme indiqué :

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

Cochez maintenant la commande pour trier les colonnes 1, 2 et 3 dans l'ordre numérique.

$ 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

Trier par séparateur de champ de colonne (délimiteur -t Option)

Par défaut, le délimiteur des colonnes est un espace ou une tabulation. Mais nous pouvons utiliser un délimiteur personnalisé en utilisant -t ou --field-separator option dans le tri.

Prenons un exemple, utilisez deux-points (:) comme délimiteur et le fichier '/etc/passwd' pour trier.

Si nous voulons trier le fichier /etc/passwd sur la base des UID, nous utilisons la commande suivante :

$ 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--->

Trier par mois (option -M)

Utilisation de -M option, vous pouvez trier par mois. Si vous avez un fichier avec des mois, triez l'ordre des commandes par mois.

Par exemple, le fichier 'months.txt' contient une liste de noms de mois.

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

Nous allons maintenant utiliser l'option -M pour trier le fichier 'mois.txt' par mois.

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

Trier les nombres lisibles par l'homme (option -h)

Le tri peut ordonner des nombres lisibles par l'homme comme 2K, 5G, 3M en utilisant -h ou --human-numeric-sort option.

Par exemple, ci-dessous la liste des fichiers numéro lisible par l'homme

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

La commande suivante utilise -h option pour comparer et trier les nombres lisibles par l'homme.

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

Vérifier les entrées triées (option -c)

La commande sort peut vérifier si l'entrée est déjà triée ou non en utilisant -c option. S'il n'est pas trié, il renvoie la première ligne non triée.

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

Rien n'est imprimé pour l'entrée triée :

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

Trier avec d'autres commandes

Le tri est un outil de traitement de texte, il peut donc être utilisé en redirigeant certaines entrées d'une autre commande.

Dans la commande suivante, nous utilisons la sortie de la commande tail comme entrée pour le tri :

$ 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

Le tri peut être inversé avec l'option -r.

Prenons un autre exemple pour trier la sortie de la commande au format lisible par l'homme par taille, utilisez la commande suivante :

$ du -h | sort -h

Conclusion

Dans ce didacticiel, nous découvrons le tri Linux et son option pour ordonner le contenu des fichiers. J'espère que vous avez apprécié la lecture et n'hésitez pas à commenter ci-dessous si vous trouvez d'autres exemples.


Linux
  1. Commande Linux wc avec exemples

  2. Commande JQ sous Linux avec exemples

  3. ln Exemples de commandes sous Linux

  4. file Exemples de commandes sous Linux

  5. sort Exemples de commandes sous Linux

Commande Linux WC avec exemples

Commande de tri sous Linux avec des exemples

Utilisation de la commande Linux mv avec des exemples

Commande de montage Linux avec exemples

Commande Linux gawk avec exemples

Linux make Commande avec des exemples