La commande standard pour trier un fichier de texte est sort. La commande sort trie le ou les fichiers passés en arguments ou à défaut l’entrée standard et affiche le résultat sur la sortie standard. Par défaut, le tri s’effectue selon l’ordre lexicographique (ordre ASCII, voir man ascii). Diverses options permettent de choisir d’autres critères pour le tri qui peut être numérique (-n), inversé (-r), alphanumérique (-d), ignorant les caractères non imprimables (-i), sans distinction entre majuscules et minuscules (-f)... Pour les nombres en langue française, le séparateur entre la partie décimale et la partie entière est une virgule, non un point comme en anglais.

Voilà trois exemples d’utilisation de la commande sort. L’exemple suivant trie le résultat de la commande who selon l’ordre lexicographique donc les noms de connexion des utilisateurs connectés seront triés.

 
problème génération shellcmds verbatim

Le deuxième exemple permet d’afficher la liste des fichiers du répertoire courant dans l’ordre croissant de leur taille. La commande ls -s permet d’afficher la liste des noms des fichiers du répertoire courant précédés de leur taille. Il faut alors passer le résultat de cette commande à sort et sélectionner, avec l’option -n, un tri numérique.  
problème génération shellcmds verbatim

Le troisième exemple permet de trier le fichier /etc/passwd en fonction du numéro d’utilisateur (troisième champ du fichier). Pour cela, il faut définir le séparateur de champ comme étant : avec l’option -t:, sélectionner un tri numérique avec l’option -n et enfin trier sur le troisième champ avec l’option -k 3.  
problème génération shellcmds verbatim

La commande paste permet la fusion ligne à ligne des fichiers passés en argument. Elle affiche les fichiers selon le principe suivant: première ligne de chaque fichier, deuxième ligne de chacun, puis troisième ligne et ainsi de suite. Les lignes sont séparées par défaut par le caractère tabulation mais on peut définir d’autres séparateurs avec l’option -dliste liste représente un ensemble de séparateurs.

Soit un fichier fic1 contenant une liste de noms de personnes:
 
problème génération shellcmds verbatim

Soit un fichier fic2 contenant l’âge respectif des personnes:
 
problème génération shellcmds verbatim

Voilà le résultat de la commande paste:
 
problème génération shellcmds verbatim

Il ne faut pas confondre le résultat de cette commande avec le résultat de la commande:

 
problème génération shellcmds verbatim

La commande split découpe le fichier passé en argument (ou à défaut l’entrée standard) par tranches de mille lignes. Le fichier original n’est pas modifié et chaque portion est copiée dans un nouveau fichier. Par défaut, les fichiers créés en sortie ont pour nom xaa, xab, xac... jusqu’à xzz mais on peut remplacer le préfixe x par un autre nom placé en deuxième argument.  
 
Retour à la page de cours