Ordonnez vos sorties avec sort sous Linux
I. Présentation
La manipulation des fichiers et des sorties de commande sous Linux peut rapidement devenir un art et être d'une efficacité extraordinaire lorsque l'on connait les bons outils et les bonnes commandes. Aujourd'hui nous allons voir d'un peu plus près la commande "sort" native à la plupart des systèmes Linux (il me semble, un apt-get install sort ou yum install sort devrait régler le problème sinon ;)).
Cette commande, comme son nom l'indiquera au bilingue anglais permet d'ordonner, c'est à dire de ranger dans un ordre donné, une sortie. Par sortie on peut comprendre un fichier que l'on aura donné (cat monfichier.txt donnera en sortie le contenu de monfichier.txt) ou le résultat d'une commande qui est plus simplement ce qu'elle affiche après son exécution.
La commande sort a de pratique dans l'environnement de ligne de commande Linux qu'elle est construite pour gérer un grand nombre de fonction de tri. On peut par exemple trier par ordre numérique, ordre alphabétique, par ordre de grandeur (Ko, Mo ,Go) ou alors dans l'ordre inverse. Voyons quelques exemples d'utilisation.
II. Utiliser la commande sort pour donner un ordre à vos outputs
J'ai créé un fichier texte contenant différents prénoms dans le désordre alphabétique, voici à quoi il ressemble :
Je vais maintenant utiliser sort pour trier ces prénoms dans l'ordre alphabétique. J'effectue mon tri sur l'affichage du contenu d'un fichier mais cela marcherait de la même façon pour la sortie d'une autre commande que "cat" :
cat fichier.txt | sort -d
On se retrouve donc avec le contenu du fichier trié. Attention, il s'agit là d'une sortie simple, pour mettre cette sortie dans un fichier (et avoir le même contenu trié dans un fichier), redirigez cette sortie simple dans un second fichier, par exemple :
cat prenom.txt | sort -d > prenom_tries.txt
Note : La commande "sort" utilise par défaut l'option "-d", il n'est donc dans ce cas là pas obligatoire de la préciser.
La même chose dans l'ordre exacte mais inversé :
cat prenom.txt | sort -d -r
Cas contraire pour effectuer un mélange par exemple, j'ai créé le fichier ordonné suivant :
Je vais maintenant mélanger ces valeurs avec l'option "random" de sort qui permet de désordonner le tout :
cat chiffres.txt | sort -R
Un autre cas plus parlant est celui d'un fichier de logs d'un serveur web contenant des IP, après n'avoir récupéré que les IP via la commande "cut" par exemple, on se retrouve avec une liste d'IP que nous allons pouvoir ranger dans l'ordre (pour identifier des sous réseaux du LAN par exemple). Voici le fichier avant tri :
Puis après en utilisant la commande suivante :
cat ips.txt | sort -n
Une autre utilisation intéressante est le tri par taille, sort sait directement reconnaître qu'on lui donne des tailles et sait les trier à partir du moment où l'on précise l'option "-h" (pour humans format), exemple ici avec quelques tailles saisies à la main dans un fichier :
Voila ! Nous avons à peu près fait le tour de la commande, sort est une commande à avoir dans un coin de tête car elle est extrêmement pratique et simple d'utilisation.
Cela me rapelle un petit exemple de mise en pratique http://blogmotion.fr/systeme/taille-espace-personnel-4663 🙂
Bien écrit, instructif et qui donne goût d’approfondir le sujet traité.
Excellent !