Introduction
Cette expérience vous présente les commandes Linux incontournables pour le traitement de texte : tr, col, join et paste. Vous apprendrez à manipuler des fichiers texte avec efficacité grâce à ces outils, qui constituent la base de nombreuses tâches sous Linux. Ce guide est conçu pour les débutants, offrant des explications détaillées et des exemples concrets pour vous aider à assimiler chaque commande en profondeur.
Utilisation de la commande tr
La commande tr, abréviation de "translate" (traduire), est un outil performant utilisé pour transformer ou supprimer des caractères dans un flux de texte. Elle s'avère particulièrement utile pour des tâches telles que la conversion de la casse, la suppression de caractères spécifiques ou le remplacement d'un caractère par un autre.
Commençons par quelques opérations de base avec tr :
- Supprimer des caractères spécifiques d'une chaîne :
echo 'hello labex' | tr -d 'olh'
Cette commande supprimera toutes les occurrences des lettres 'o', 'l' et 'h' de la chaîne d'entrée. Voici le détail du processus :
echo 'hello labex'affiche le texte "hello labex".- Le symbole
|(tube ou pipe) envoie cette sortie vers la commandetr. tr -d 'olh'indique àtrde supprimer (-dpour delete) tous les caractères 'o', 'l' ou 'h' qu'il trouve.
Vous devriez obtenir e abex en sortie. Notez que tous les 'o', 'l' et 'h' ont disparu.
- Supprimer les caractères en double :
echo 'hello' | tr -s 'l'
Cette commande va compresser (-s pour squeeze) ou supprimer les doublons de la lettre 'l' dans la chaîne. Vous devriez obtenir helo.
echo 'balloon' | tr -s 'o'
Le résultat sera ballon. Le double 'o' a été réduit à un seul 'o'.
- Convertir du texte en majuscules :
echo 'hello labex' | tr '[:lower:]' '[:upper:]'
Cette commande transforme toutes les lettres minuscules en majuscules. Voici l'explication :
'[:lower:]'est une classe de caractères représentant toutes les minuscules.'[:upper:]'est une classe de caractères représentant toutes les majuscules.- La commande demande à
trde remplacer chaque caractère du premier ensemble par le caractère correspondant du second.
La sortie affichera HELLO LABEX.
Testez ces commandes et observez les résultats. Ne vous inquiétez pas si vous faites une erreur, vous pouvez toujours recommencer. Si vous êtes curieux, essayez de modifier le texte d'entrée ou les caractères ciblés par tr.
Par exemple, à votre avis, que se passera-t-il si vous lancez :
echo 'hello world' | tr 'ol' 'OL'
Essayez pour vérifier !
Pour approfondir vos connaissances sur tr, vous pouvez consulter son manuel avec man tr. Vous y trouverez une liste exhaustive de toutes les options et utilisations possibles. Pour quitter le manuel, appuyez simplement sur 'q'.
N'oubliez pas que sous Linux, la plupart des commandes suivent une structure similaire : commande [options] arguments. Comprendre ce modèle facilitera votre apprentissage futur.
Exploration de la commande col
La commande col sert à filtrer les retours arrière (reverse line feeds) d'une entrée. Elle est surtout employée pour convertir les tabulations en espaces et inversement. On l'utilise souvent pour traiter des fichiers dont le formatage est incohérent, notamment lors du transfert de fichiers entre différents systèmes d'exploitation.
Voyons col en action :
- Tout d'abord, visualisons le contenu d'un fichier contenant des tabulations :
cat -A /etc/protocols | head -n 10
Voici ce que fait cette commande :
cataffiche le contenu d'un fichier.- L'option
-Ademande àcatde montrer tous les caractères, y compris les caractères non imprimables. /etc/protocolsest le fichier examiné (un fichier système listant les protocoles internet).|transmet la sortie à la commande suivante.head -n 10n'affiche que les 10 premières lignes.
Vous verrez des caractères ^I dans la sortie. Ils représentent les tabulations. Le symbole ^ est utilisé pour les caractères de contrôle, et I (9ème lettre de l'alphabet) représente le caractère ASCII de la tabulation (valeur décimale 9).
- Utilisons maintenant
colpour convertir ces tabulations en espaces :
cat /etc/protocols | col -x | cat -A | head -n 10
Cet enchaînement de commandes fonctionne ainsi :
cat /etc/protocolsextrait le contenu du fichier.|envoie le flux verscol.col -xconvertit les tabulations en espaces (l'option-xactive cette conversion).- Un autre
|envoie le résultat verscat -Apour visualiser les caractères. head -n 10limite l'affichage aux 10 premières lignes.
Comparez ce résultat avec la commande précédente. Vous constaterez que les ^I ont été remplacés par des espaces.
L'option -x est très utile pour garantir un formatage uniforme sur différents systèmes ou éditeurs de texte qui pourraient interpréter les tabulations différemment.
Si vous souhaitez découvrir d'autres options de col, consultez man col. Rappelez-vous, 'q' permet de quitter le manuel.
Utilisation de la commande join
La commande join permet de fusionner les lignes de deux fichiers sur la base d'un champ commun. Elle fonctionne de manière analogue à une opération de jointure dans une base de données. C'est un outil précieux lorsque vous avez des données liées réparties dans plusieurs fichiers et que vous souhaitez les combiner via une clé ou un identifiant commun.
Créons deux fichiers simples pour les fusionner :
- Création du premier fichier :
echo -e "1 apple\n2 banana\n3 cherry" > fruits.txt
Détail de la commande :
echoproduit du texte.-epermet d'interpréter les caractères d'échappement (comme\n).\ncrée une nouvelle ligne.>redirige la sortie vers un fichier nomméfruits.txt.
- Création du second fichier :
echo -e "1 red\n2 yellow\n3 red" > colors.txt
Cela crée un autre fichier avec des numéros correspondants mais des valeurs différentes dans le second champ.
- Fusionnons maintenant ces fichiers :
join fruits.txt colors.txt
Cette commande assemble les lignes des deux fichiers en se basant sur le premier champ (le numéro).
Le résultat devrait ressembler à ceci :
1 apple red
2 banana yellow
3 cherry red
La commande join a fait correspondre les lignes grâce au premier champ (1, 2, 3) et a combiné le reste des informations.
- Vous pouvez également spécifier les champs à utiliser pour la jointure. Par exemple :
join -1 2 -2 2 <(sort -k2 fruits.txt) <(sort -k2 colors.txt)
Cette commande plus complexe effectue les actions suivantes :
-1 2indique àjoind'utiliser le deuxième champ du premier fichier.-2 2indique d'utiliser le deuxième champ du second fichier.<(...)est une substitution de processus, permettant d'utiliser la sortie d'une commande là où un nom de fichier est normalement attendu.sort -k2trie le fichier selon le deuxième champ.
Il est impératif de trier les fichiers au préalable car join exige que les entrées soient ordonnées selon les champs de jointure.
Si aucun champ ne correspond entre les deux fichiers, la commande ne produira aucune sortie, ce qui est le comportement normal de join.
Pour observer le fonctionnement du tri, essayez ces commandes séparément :
sort -k2 fruits.txt
sort -k2 colors.txt
Gardez à l'esprit que join est sensible à l'ordre des lignes. Si les fichiers ne sont pas triés sur le champ de jointure, vous pourriez obtenir des résultats inattendus ou aucune sortie.
Manipulation avec la commande paste
La commande paste sert à fusionner les lignes de plusieurs fichiers. Contrairement à join, elle ne nécessite pas de champ commun. Elle est idéale pour juxtaposer des fichiers côte à côte ou créer un tableau à partir de plusieurs sources.
Voyons comment paste fonctionne :
- Créons trois fichiers simples :
echo -e "apple\nbanana\ncherry" > fruits.txt
echo -e "red\nyellow\nred" > colors.txt
echo -e "sweet\nsweet\nsweet" > tastes.txt
Chaque fichier contient trois lignes.
- Utilisons
pastepour fusionner ces fichiers :
paste fruits.txt colors.txt tastes.txt
Cette commande aligne les lignes des trois fichiers horizontalement. Vous devriez voir :
apple red sweet
banana yellow sweet
cherry red sweet
Par défaut, paste utilise une tabulation pour séparer les colonnes.
- Nous pouvons définir un délimiteur différent :
paste -d ':' fruits.txt colors.txt tastes.txt
L'option -d ':' demande à paste d'utiliser ':' comme séparateur. Le résultat sera :
apple:red:sweet
banana:yellow:sweet
cherry:red:sweet
- Enfin, essayons l'option
-s, qui sérialise le collage :
paste -s fruits.txt colors.txt tastes.txt
L'option -s transforme le contenu de chaque fichier en une seule ligne horizontale. Le résultat sera :
apple banana cherry
red yellow red
sweet sweet sweet
Chaque ligne de la sortie représente désormais l'intégralité d'un fichier.
Ces opérations avec paste sont très utiles pour combiner des données de diverses manières, comme fusionner des fichiers de log, créer des fichiers CSV ou formater des données pour d'autres programmes.
Pour explorer davantage d'options, n'hésitez pas à consulter man paste.
S'amuser avec le traitement de texte
Maintenant que vous maîtrisez ces commandes, passons à une application plus ludique ! Nous allons installer et jouer à un jeu en mode texte : Space Invaders. Cela illustre comment le traitement de texte peut être utilisé de manière créative dans l'environnement Linux.
- Commençons par mettre à jour la liste des paquets :
sudo apt-get update
Cette commande actualise la liste des logiciels disponibles et leurs versions. C'est une bonne habitude à prendre avant d'installer de nouveaux programmes.
sudoexécute la commande avec les privilèges d'administrateur.apt-getest l'outil de gestion de paquets sous Ubuntu.updatedemande la mise à jour de la base de données des paquets.
- Installons maintenant le jeu :
sudo apt-get install ninvaders -y
Cette commande installe le jeu ninvaders.
installdemande l'installation d'un nouveau paquet.ninvadersest le nom du jeu.-yrépond automatiquement "oui" à toutes les questions durant l'installation.
- Une fois l'installation terminée, lancez le jeu :
ninvaders
Voici comment jouer :
- Utilisez les flèches gauche et droite pour déplacer votre vaisseau.
- Appuyez sur la barre d'espace pour tirer.
- Appuyez sur 'p' pour mettre le jeu en pause.
- Appuyez sur 'q' pour quitter.
Jouez quelques minutes. Arriverez-vous à battre le record ?

Ce jeu est un excellent exemple de la manipulation de texte pour créer des expériences interactives dans le terminal. Il utilise de simples caractères ASCII pour représenter les vaisseaux, les extraterrestres et les tirs, prouvant que même des interactions complexes peuvent être gérées uniquement avec du texte.
Quand vous aurez fini, n'oubliez pas de quitter avec 'q'.
Résumé
Au cours de cette expérience, vous avez découvert plusieurs commandes puissantes de traitement de texte sous Linux :
tr: Pour transformer ou supprimer des caractères. Vous l'avez utilisé pour effacer des lettres, supprimer des doublons et changer la casse.col: Pour convertir les tabulations en espaces. Vous avez manipulé les caractères invisibles d'un fichier système.join: Pour fusionner les lignes de deux fichiers via un champ commun. Vous avez créé et lié des données structurées.paste: Pour fusionner des fichiers ligne par ligne. Vous avez combiné plusieurs sources de données de différentes manières.
Ces commandes sont des outils fondamentaux de la panoplie Linux. Elles peuvent être combinées pour analyser et transformer des données textuelles avec une grande efficacité. Voici les points clés à retenir :
- Sous Linux, tout est considéré comme un fichier, et beaucoup de configurations sont au format texte.
- Le symbole pipe (
|) est un outil puissant pour enchaîner les commandes. - La structure
commande [options] argumentsest la norme. - Les pages de manuel (
man) sont vos meilleures alliées pour approfondir vos connaissances.
Enfin, nous avons vu que le traitement de texte peut être ludique. La polyvalence du texte sous Linux permet de construire des applications interactives complexes avec de simples caractères !
En poursuivant votre apprentissage de Linux, ces compétences vous seront précieuses pour l'administration système, l'analyse de données et la programmation. Continuez à pratiquer et vous deviendrez un expert du traitement de texte sous Linux !
N'oubliez pas : on apprend mieux en pratiquant. N'ayez pas peur d'expérimenter, de tester différentes options et d'observer les résultats. Bon traitement de texte !



