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