Commande Linux tr : Traduction de caractères

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), nous allons explorer la commande tr sous Linux, un utilitaire polyvalent pour transformer le texte au niveau des caractères. La commande tr, abréviation de "translate" (traduire), est largement utilisée pour des tâches telles que la conversion de casse, la suppression de caractères spécifiques et le nettoyage de données de base. À la fin de ce laboratoire, vous serez compétent dans l'utilisation de tr pour diverses situations de manipulation de texte. Ce laboratoire est conçu pour les débutants, donc n'ayez pas peur si vous êtes nouveau dans l'utilisation des commandes Linux - nous vous guiderons soigneusement à chaque étape.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/TextProcessingGroup -.-> linux/tr("Character Translating") subgraph Lab Skills linux/echo -.-> lab-219198{{"Commande Linux tr : Traduction de caractères"}} linux/cat -.-> lab-219198{{"Commande Linux tr : Traduction de caractères"}} linux/tr -.-> lab-219198{{"Commande Linux tr : Traduction de caractères"}} end

Comprendre les bases de tr

Commençons par comprendre la syntaxe de base de la commande tr :

tr [OPTION]... SET1 [SET2]

La commande tr lit le texte à partir de l'entrée standard (stdin), le transforme selon les options et les ensembles de caractères spécifiés, et écrit le résultat sur la sortie standard (stdout).

Commençons par un exemple simple. Nous allons créer un fichier nommé greeting.txt avec un message de salutation de base, puis utiliser tr pour convertir toutes les lettres minuscules en majuscules.

Tout d'abord, créez le fichier :

echo "hello, world" > ~/project/greeting.txt

Astuce : Vous pouvez copier et coller les commandes de création de fichier dans le terminal pour créer les fichiers correctement.

Cette commande crée un nouveau fichier nommé greeting.txt dans votre répertoire de projet (~/project/) avec le contenu "hello, world".

Maintenant, utilisons tr pour convertir toutes les lettres minuscules en majuscules :

cat ~/project/greeting.txt | tr 'a-z' 'A-Z'

Vous devriez voir la sortie suivante :

HELLO, WORLD

Décortiquons cette commande :

  1. cat ~/project/greeting.txt : Cette commande lit le contenu du fichier.
  2. | : C'est un symbole de tuyau (pipe). Il prend la sortie de la commande à sa gauche et l'utilise comme entrée pour la commande à sa droite.
  3. tr 'a-z' 'A-Z' : C'est notre commande tr. Elle traduit chaque caractère du premier ensemble ('a-z', qui représente toutes les lettres minuscules) en le caractère correspondant du deuxième ensemble ('A-Z', qui représente toutes les lettres majuscules).

Notez que cette commande ne modifie pas le fichier original. Si vous souhaitez enregistrer le texte transformé, vous devrez rediriger la sortie vers un nouveau fichier.

Supprimer des caractères avec tr

La commande tr peut également supprimer des caractères spécifiques de l'entrée. Cela est particulièrement utile lorsque vous devez nettoyer un texte en supprimant les caractères indésirables. Créons un fichier contenant de la ponctuation, puis supprimons - la.

Tout d'abord, créez un fichier avec de la ponctuation :

echo "Hello, World! How are you?" > ~/project/punctuated.txt

Astuce : Vous pouvez copier et coller les commandes de création de fichier dans le terminal pour créer les fichiers correctement.

Maintenant, utilisons tr pour supprimer toute la ponctuation :

cat ~/project/punctuated.txt | tr -d '[:punct:]'

Vous devriez voir :

Hello World How are you

Décortiquons cette commande :

  1. cat ~/project/punctuated.txt : Cette commande lit le contenu du fichier.
  2. | : Cela envoie la sortie à la commande tr.
  3. tr -d '[:punct:]' :
    • L'option -d indique à tr de supprimer les caractères spécifiés.
    • [:punct:] est une classe de caractères (character class) qui représente tous les caractères de ponctuation. Les classes de caractères sont des ensembles prédéfinis de caractères qui facilitent la spécification de groupes de caractères.

Cette commande supprime tous les caractères de ponctuation du texte, ne laissant que des lettres, des chiffres et des espaces.

Traduire plusieurs caractères

Maintenant, explorons une traduction plus complexe. Nous allons créer un fichier contenant du texte encodé et utiliser tr pour le décoder. Cet exemple montre comment tr peut être utilisé pour de simples opérations de chiffrement et de déchiffrement.

Tout d'abord, créez un fichier avec du texte encodé :

echo "Tijt jt b tfdsfu nfttbhf." > ~/project/encoded.txt

Astuce : Vous pouvez copier et coller les commandes de création de fichier dans le terminal pour créer les fichiers correctement.

Maintenant, décodons - le :

cat ~/project/encoded.txt | tr 'b-za-a' 'a-z'

Vous devriez voir :

This is a secret message.

Décortiquons cette commande :

  1. cat ~/project/encoded.txt : Cette commande lit le contenu du fichier encodé.
  2. | : Cela envoie la sortie à la commande tr.
  3. tr 'b-za-a' 'a-z' :
    • Le premier ensemble, 'b-za-a', représente un alphabet décalé où 'b' est traité comme 'a', 'c' comme 'b', et ainsi de suite, avec 'a' revenant à 'z'.
    • Le deuxième ensemble, 'a-z', est l'alphabet normal.
    • Cela décale effectivement chaque lettre de l'entrée d'une position en arrière dans l'alphabet.

Ce type de substitution est une forme très simple de chiffrement appelée chiffre de César. Bien qu'il ne soit pas sécurisé pour une utilisation réelle, c'est un excellent exemple de l'utilisation de tr pour la substitution caractère par caractère.

Utilisation des classes de caractères avec tr

La commande tr prend en charge diverses classes de caractères (character classes), qui sont des ensembles prédéfinis de caractères. Elles peuvent être très utiles pour des transformations de texte plus complexes. Utilisons-en quelques-unes dans un scénario pratique.

Tout d'abord, créez un fichier avec un contenu mixte :

echo "User123 logged in at 09:45 AM on 2023-08-15" > ~/project/log_entry.txt

Astuce : Vous pouvez copier et coller les commandes de création de fichier dans le terminal pour créer les fichiers correctement.

Maintenant, extrayons uniquement les chiffres de cette entrée de journal :

cat ~/project/log_entry.txt | tr -cd '[:digit:]'

Vous devriez voir :

12309452023815

Décortiquons cette commande :

  1. cat ~/project/log_entry.txt : Cette commande lit le contenu du fichier de journal.
  2. | : Cela envoie la sortie à la commande tr.
  3. tr -cd '[:digit:]' :
    • L'option -c inverse l'ensemble (ce qui signifie "pas dans cet ensemble").
    • L'option -d supprime les caractères spécifiés.
    • [:digit:] est une classe de caractères qui représente tous les chiffres (0 - 9).
    • Ensemble, -cd '[:digit:]' signifie "supprimer tous les caractères qui ne sont pas des chiffres".

Cette commande est utile pour extraire des données numériques d'un texte mixte, ce qui peut être pratique dans les tâches d'analyse de journaux ou de nettoyage de données.

Supprimer les caractères répétés avec tr

La commande tr peut également « réduire » les caractères répétés en une seule occurrence. Cela est utile pour nettoyer des données contenant des répétitions inutiles. Créons un fichier avec quelques caractères répétés, puis nettoyons - le.

Tout d'abord, créez un fichier avec des espaces répétés :

echo "This    is    a    test    with    extra    spaces." > ~/project/spaced.txt

Astuce : Vous pouvez copier et coller les commandes de création de fichier dans le terminal pour créer les fichiers correctement.

Maintenant, utilisons tr pour réduire les espaces répétés :

cat ~/project/spaced.txt | tr -s ' '

Vous devriez voir :

This is a test with extra spaces.

Décortiquons cette commande :

  1. cat ~/project/spaced.txt : Cette commande lit le contenu du fichier avec des espaces supplémentaires.
  2. | : Cela envoie la sortie à la commande tr.
  3. tr -s ' ' :
    • L'option -s réduit les répétitions du caractère spécifié en une seule occurrence.
    • ' ' spécifie que nous voulons réduire les caractères d'espace.

Cette commande est particulièrement utile lorsqu'il s'agit de données mal formatées ou lorsque vous devez normaliser les espaces blancs dans un fichier texte.

Résumé

Dans ce laboratoire, nous avons exploré la polyvalente commande tr sous Linux. Nous avons appris à :

  1. Convertir la casse du texte
  2. Supprimer des caractères spécifiques
  3. Traduire plusieurs caractères
  4. Utiliser les classes de caractères
  5. Supprimer les caractères répétés

La commande tr est un outil puissant pour la manipulation de texte. Voici quelques options supplémentaires que nous n'avons pas abordées en détail :

  • -c : Inverser l'ensemble de caractères de la chaîne 1, c'est - à - dire opérer sur tous les caractères qui ne sont pas dans la chaîne 1
  • -t : Tronquer la chaîne 1 à la longueur de la chaîne 2

Pour des tâches de traitement de texte plus avancées, vous pourriez souhaiter explorer d'autres commandes telles que sed et awk dans de futurs laboratoires.

Ressources