GNU/Linux >> Tutoriels Linux >  >> Linux

Comment trier des fichiers sous Linux à l'aide de la commande Sort

La commande Trier est utile pour trier/ordonner les lignes dans les fichiers texte. Vous pouvez trier les données dans un fichier texte et afficher la sortie à l'écran, ou la rediriger vers un fichier. En fonction de vos besoins, sort propose plusieurs options de ligne de commande pour trier les données dans un fichier texte.

Syntaxe de la commande de tri :

$ sort [-options]

Par exemple, voici un fichier de test :

$ cat test
zzz
sss
qqq
aaa
BBB
ddd
AAA

Et voici ce que vous obtenez lorsque la commande sort est exécutée sur ce fichier sans aucune option. Il trie les lignes dans le fichier de test et affiche la sortie triée.

$ sort test
aaa
AAA
BBB
ddd
qqq
sss
zzz

1. Effectuez un tri numérique à l'aide de l'option -n

Si nous voulons trier sur une valeur numérique, nous pouvons utiliser -n ou –tri-numérique option.

Créez le fichier de test suivant pour cet exemple :

$ cat test
22 zzz
33 sss
11 qqq
77 aaa
55 BBB

La commande de tri suivante trie les lignes du fichier de test sur la valeur numérique du premier mot de la ligne et affiche la sortie triée.

$ sort -n test
11 qqq
22 zzz
33 sss
55 BBB
77 aaa

2. Trier les nombres lisibles par l'homme à l'aide de l'option -h

Si nous voulons trier sur des nombres lisibles par l'homme (par exemple, 2K 1M 1G), nous pouvons utiliser -h ou –human-numeric-sort option.

Créez le fichier de test suivant pour cet exemple :

$ cat test
2K
2G
1K
6T
1T
1G
2M

La commande de tri suivante trie les nombres lisibles par l'homme (c'est-à-dire 1K =1 Mille, 1M =1 Million, 1G =1 Giga, 1T =1 Tera) dans le fichier de test et affiche la sortie triée.

$ sort -h test
1K
2K
2M
1G
2G
1T
6T

3. Trier les mois d'une année à l'aide de l'option -M

Si nous voulons trier dans l'ordre des mois de l'année, nous pouvons utiliser -M ou –tri-mois option.

Créez le fichier de test suivant pour cet exemple :

$ cat test
sept
aug
jan
oct
apr
feb
mar11

La commande de tri suivante trie les lignes dans le fichier de test selon l'ordre mensuel. Remarque, les lignes du fichier doivent contenir au moins 3 caractères du nom du mois au début de la ligne (par exemple, jan, feb, mar). Si nous donnons ja pour janvier ou au pour août, la commande de tri ne le considérera pas comme un nom de mois.

$ sort -M test
jan
feb
mar11
apr
aug
sept
oct

4. Vérifiez si le contenu est déjà trié à l'aide de l'option -c

Si nous voulons vérifier que les données du fichier texte sont triées ou non, nous pouvons utiliser -c ou –check, –check=diagnose-first option.

Créez le fichier de test suivant pour cet exemple :

$ cat test
2
5
1
6

La commande de tri suivante vérifie si les données du fichier texte sont triées ou non. Si ce n'est pas le cas, il affiche la première occurrence avec le numéro de ligne et la valeur désordonnée.

$ sort -c test
sort: test:3: disorder: 1

5. Inversez la sortie et vérifiez l'unicité à l'aide des options -r et -u

Si nous voulons obtenir une sortie triée dans l'ordre inverse, nous pouvons utiliser -r ou –inverser option. Si le fichier contient des lignes en double, l'option "-u" peut être utilisée pour obtenir des lignes uniques dans la sortie triée.

Créez le fichier de test suivant pour cet exemple :

$ cat test
5
2
2
1
4
4

La commande de tri suivante trie les lignes du fichier de test dans l'ordre inverse et affiche la sortie triée.

$ sort -r test
5
4
4
2
2
1

La commande de tri suivante trie les lignes du fichier de test dans l'ordre inverse et supprime les lignes en double de la sortie triée.

$ sort -r -u test
5
4
2
1

6. Trier sélectivement le contenu, personnaliser le délimiteur, écrire la sortie dans un fichier à l'aide des options -k, -t, -o

Si nous voulons trier sur la position de la colonne ou du mot dans les lignes du fichier texte, l'option "-k" peut être utilisée. Si chaque mot de chaque ligne de fichier est séparé par un délimiteur sauf 'espace', alors nous pouvons spécifier un délimiteur en utilisant l'option "-t". Nous pouvons obtenir une sortie triée dans n'importe quel fichier de sortie spécifié (en utilisant l'option "-o") au lieu d'afficher la sortie sur la sortie standard.

Créez le fichier de test suivant pour cet exemple :

$ cat test
aa aa zz
aa aa ff
aa aa tt
aa aa kk

La commande de tri suivante trie les lignes du fichier de test sur le 3ème mot de chaque ligne et affiche la sortie triée.

$ sort -k3 test
aa aa ff
aa aa kk
aa aa tt
aa aa zz
$ cat test
aa|5a|zz
aa|2a|ff
aa|1a|tt
aa|3a|kk

Ici, plusieurs options sont utilisées ensemble. Dans le fichier de test, les mots de chaque ligne sont séparés par un délimiteur "|". Il trie les lignes du fichier de test sur le 2ème mot de chaque ligne sur la base d'une valeur numérique et stocke la sortie triée dans le fichier de sortie spécifié.

$ sort -n -t'|' -k2 test -o outfile

Le contenu du fichier de sortie est affiché ci-dessous.

$ cat outfile
aa|1a|tt
aa|2a|ff
aa|3a|kk
aa|5a|zz


Linux
  1. Comment renommer des fichiers sous Linux

  2. Comment effectuer une comparaison ligne par ligne de fichiers sous Linux à l'aide de la commande diff - Partie II

  3. Comment effectuer une comparaison ligne par ligne de fichiers sous Linux à l'aide de la commande diff

  4. Comment trier les fichiers selon leurs autorisations à l'aide de Ls ?

  5. Comment transférer des fichiers en toute sécurité à l'aide de la commande SCP sous Linux

Comment tester la vitesse d'Internet en utilisant la ligne de commande sous Linux

Comment renommer des fichiers en utilisant la ligne de commande sous Linux

Comment trier des fichiers sous Linux (GUI et Shell)

Comment copier des fichiers sous Linux à l'aide de la commande CP

Comment compter les fichiers dans le répertoire sous Linux

Comment télécharger des fichiers dans Rocky Linux 8 sur la ligne de commande à l'aide de wget