Traduction de caractères Linux

LinuxBeginner
Pratiquer maintenant

Introduction

La commande tr est un outil puissant de manipulation de texte sous Linux qui permet aux utilisateurs de traduire, supprimer et comprimer des caractères à partir de l'entrée standard. Elle est particulièrement utile pour des tâches telles que la conversion de casse, la suppression de caractères spécifiques ou la normalisation du formatage dans les fichiers texte.

Dans ce labo (LabEx), vous apprendrez à utiliser la commande tr pour diverses tâches de manipulation de texte. Vous explorerez trois fonctionnalités principales : la traduction de caractères d'un ensemble à un autre, la suppression de caractères indésirables et la compression de caractères répétés. Ces compétences sont essentielles pour un traitement efficace du texte et un nettoyage des données dans les environnements Linux.

À la fin de ce labo (LabEx), vous serez en mesure d'utiliser avec confiance la commande tr pour transformer les données textuelles selon vos besoins, rendant vos tâches de traitement de texte plus efficaces et précises.

Comprendre la commande de base tr

La commande tr sous Linux est utilisée pour traduire, supprimer ou comprimer des caractères à partir de l'entrée standard, et écrit le résultat sur la sortie standard. Dans cette étape, vous apprendrez la syntaxe de base de la commande tr et comment l'utiliser pour convertir les lettres minuscules en majuscules.

La syntaxe de base de tr

La syntaxe de base de la commande tr est la suivante :

tr [OPTION]... SET1 [SET2]

Où :

  • SET1 est l'ensemble de caractères à traduire ou à supprimer
  • SET2 est l'ensemble de caractères qui remplaceront ceux de SET1

Création d'un fichier texte d'exemple

Commençons par créer un fichier texte d'exemple pour pratiquer. Ouvrez un terminal dans la machine virtuelle LabEx et exécutez la commande suivante :

echo 'industrial revolution' > ~/project/sample.txt

Cette commande crée un nouveau fichier nommé sample.txt dans le répertoire /home/labex/project avec le texte "industrial revolution".

Conversion des minuscules en majuscules

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

tr 'a-z' 'A-Z' < ~/project/sample.txt

Lorsque vous exécutez cette commande, vous devriez voir la sortie suivante :

INDUSTRIAL REVOLUTION

Comprendre la commande

Analysons ce qui s'est passé :

  • tr 'a-z' 'A-Z' indique à la commande de remplacer chaque lettre minuscule (a-z) par sa lettre majuscule correspondante (A-Z).
  • Le symbole < redirige le contenu de ~/project/sample.txt en tant qu'entrée pour la commande tr.
  • Le résultat est affiché sur le terminal mais n'est pas enregistré dans le fichier.

Enregistrement de la sortie dans un nouveau fichier

Si vous souhaitez enregistrer le texte transformé dans un nouveau fichier, vous pouvez utiliser la redirection de sortie :

tr 'a-z' 'A-Z' < ~/project/sample.txt > ~/project/uppercase_sample.txt

Pour vérifier le contenu du nouveau fichier, utilisez la commande cat :

cat ~/project/uppercase_sample.txt

Vous devriez voir :

INDUSTRIAL REVOLUTION

Maintenant, vous avez appris avec succès à utiliser la fonctionnalité de base de la commande tr pour transformer le texte de minuscules en majuscules.

Supprimer des caractères avec tr

L'une des fonctionnalités puissantes de la commande tr est sa capacité à supprimer des caractères spécifiques d'un texte. Cette fonctionnalité est particulièrement utile lors du nettoyage de fichiers de données ou de la suppression de caractères indésirables dans des flux de texte.

L'option de suppression dans tr

Pour supprimer des caractères en utilisant la commande tr, vous utilisez l'option -d suivie de l'ensemble de caractères que vous souhaitez supprimer :

tr -d SET1

SET1 est l'ensemble de caractères que vous souhaitez supprimer.

Création d'un fichier texte d'exemple contenant des nombres

Créons un fichier d'exemple contenant du texte avec des nombres que nous pouvons utiliser pour pratiquer :

echo 'Factory 1 Output: 100 units, Factory 2 Output: 150 units' > ~/project/factory_output.txt

Cette commande crée un fichier nommé factory_output.txt dans le répertoire /home/labex/project avec un texte qui inclut des nombres.

Suppression des chiffres du texte

Maintenant, utilisons la commande tr avec l'option -d pour supprimer tous les chiffres du texte :

tr -d '0-9' < ~/project/factory_output.txt

Lorsque vous exécutez cette commande, vous devriez voir la sortie suivante :

Factory  Output:  units, Factory  Output:  units

Notez que tous les nombres (1, 2, 100, 150) ont été supprimés du texte.

Comprendre la commande

Analysons ce qui s'est passé :

  • tr -d '0-9' indique à la commande de supprimer tous les caractères dans la plage 0-9 (qui sont tous des chiffres).
  • Le symbole < redirige le contenu de ~/project/factory_output.txt en tant qu'entrée pour la commande tr.
  • Le résultat est affiché sur le terminal mais n'est pas enregistré dans le fichier.

Enregistrement de la sortie dans un nouveau fichier

Si vous souhaitez enregistrer la sortie sans chiffres dans un nouveau fichier, vous pouvez utiliser la redirection de sortie :

tr -d '0-9' < ~/project/factory_output.txt > ~/project/no_digits_output.txt

Pour vérifier le contenu du nouveau fichier, utilisez la commande cat :

cat ~/project/no_digits_output.txt

Vous devriez voir :

Factory  Output:  units, Factory  Output:  units

Suppression de plusieurs ensembles de caractères

Vous pouvez également supprimer plusieurs types de caractères en une seule commande. Par exemple, supprimons à la fois les chiffres et la ponctuation :

tr -d '0-9:,;' < ~/project/factory_output.txt

Cela supprimera tous les chiffres (0-9) ainsi que les deux-points, les virgules et les points-virgules du texte.

Maintenant, vous savez comment utiliser la commande tr pour supprimer des caractères spécifiques d'un texte, ce qui est une compétence précieuse pour le nettoyage de données et le traitement de texte sous Linux.

Réduire les caractères avec tr

Une autre fonctionnalité utile de la commande tr est sa capacité à « compresser » les caractères répétés, en remplaçant les occurrences consécutives du même caractère par une seule instance. Cette fonctionnalité est particulièrement précieuse lorsqu'il s'agit de texte contenant des espaces blancs excessifs ou d'autres caractères répétés.

L'option de compression dans tr

Pour compresser les caractères répétés en utilisant la commande tr, vous utilisez l'option -s suivie de l'ensemble de caractères que vous souhaitez compresser :

tr -s SET1

SET1 est l'ensemble de caractères que vous souhaitez compresser.

Création d'un fichier texte d'exemple avec des espaces blancs excessifs

Créons un fichier d'exemple avec des espaces blancs excessifs que nous pouvons utiliser pour pratiquer :

echo 'Error:    Too much    whitespace.' > ~/project/whitespace.txt

Cette commande crée un fichier nommé whitespace.txt dans le répertoire /home/labex/project avec un texte qui inclut plusieurs espaces consécutifs.

Compression des espaces dans le texte

Maintenant, utilisons la commande tr avec l'option -s pour compresser plusieurs espaces en un seul espace :

tr -s ' ' < ~/project/whitespace.txt

Lorsque vous exécutez cette commande, vous devriez voir la sortie suivante :

Error: Too much whitespace.

Notez que les multiples espaces entre les mots ont été réduits à un seul espace, rendant le texte plus lisible.

Comprendre la commande

Analysons ce qui s'est passé :

  • tr -s ' ' indique à la commande de compresser les occurrences répétées d'un caractère espace en un seul espace.
  • Le symbole < redirige le contenu de ~/project/whitespace.txt en tant qu'entrée pour la commande tr.
  • Le résultat est affiché sur le terminal mais n'est pas enregistré dans le fichier.

Enregistrement de la sortie dans un nouveau fichier

Si vous souhaitez enregistrer le texte avec les espaces compressés dans un nouveau fichier, vous pouvez utiliser la redirection de sortie :

tr -s ' ' < ~/project/whitespace.txt > ~/project/clean_whitespace.txt

Pour vérifier le contenu du nouveau fichier, utilisez la commande cat :

cat ~/project/clean_whitespace.txt

Vous devriez voir :

Error: Too much whitespace.

Combinaison d'opérations tr

La commande tr vous permet de combiner des opérations. Par exemple, vous pouvez à la fois traduire des caractères et les compresser en une seule commande :

tr 'a-z' 'A-Z' -s ' ' < ~/project/whitespace.txt

Cette commande convertira toutes les lettres minuscules en majuscules et compressera également plusieurs espaces en un seul espace.

Création d'un exemple plus complexe

Créons un exemple plus complexe pour pratiquer :

echo 'log     entry:   error   code  404   not     found' > ~/project/complex.txt

Maintenant, utilisons tr pour convertir toutes les lettres en majuscules et compresser les espaces :

tr 'a-z' 'A-Z' -s ' ' < ~/project/complex.txt > ~/project/processed_complex.txt

Pour voir le résultat :

cat ~/project/processed_complex.txt

Vous devriez voir :

LOG ENTRY: ERROR CODE 404 NOT FOUND

Maintenant, vous avez appris à utiliser la commande tr pour compresser les caractères répétés dans un texte. Cela, combiné avec les capacités de traduction et de suppression que vous avez apprises précédemment, vous donne un outil puissant pour la manipulation de texte sous Linux.

Combinaison d'opérations tr pour une transformation avancée de texte

Dans cette étape, vous allez apprendre à combiner plusieurs opérations tr pour effectuer des transformations de texte plus avancées. La capacité à enchaîner différentes opérations rend tr un outil polyvalent pour les tâches de traitement de texte complexes.

Création d'un fichier de données d'exemple

Créons un fichier de données d'exemple qui contient un mélange de lettres majuscules et minuscules, de nombres et de caractères spéciaux :

echo 'User123: John_Doe@example.com - Last Login: 2023-10-15' > ~/project/user_data.txt

Cette commande crée un nouveau fichier nommé user_data.txt dans le répertoire /home/labex/project avec un enregistrement utilisateur d'exemple.

Plusieurs opérations avec des pipes

Une façon d'effectuer plusieurs transformations est d'utiliser des pipes pour enchaîner les commandes tr :

cat ~/project/user_data.txt | tr 'A-Z' 'a-z' | tr -d '0-9' | tr -s ' '

Cette commande va :

  1. Convertir toutes les lettres majuscules en minuscules
  2. Supprimer tous les chiffres
  3. Compresser les espaces consécutifs en un seul espace

La sortie devrait ressembler à :

user: john_doe@example.com - last login: --

Utilisation de tr avec des classes de caractères étendues

La commande tr prend en charge certaines classes de caractères spéciales qui peuvent rendre vos transformations plus concises. Certaines classes de caractères courantes incluent :

  • [:alnum:] - Toutes les lettres et chiffres
  • [:alpha:] - Toutes les lettres
  • [:digit:] - Tous les chiffres
  • [:lower:] - Toutes les lettres minuscules
  • [:upper:] - Toutes les lettres majuscules
  • [:space:] - Tous les caractères d'espace blanc

Utilisons ces classes de caractères pour transformer nos données utilisateur :

tr '[:upper:]' '[:lower:]' < ~/project/user_data.txt > ~/project/lowercase_user_data.txt

Cette commande convertit toutes les lettres majuscules en minuscules et enregistre le résultat dans un nouveau fichier.

Pour vérifier le contenu du nouveau fichier :

cat ~/project/lowercase_user_data.txt

Vous devriez voir :

user123: john_doe@example.com - last login: 2023-10-15

Création d'un exemple complet

Créons un fichier plus complexe pour pratiquer :

echo '  LOG   ENTRY:  Error-404   Page    Not    Found   (HTTP)  ' > ~/project/log_entry.txt

Maintenant, effectuons plusieurs transformations d'un coup :

cat ~/project/log_entry.txt | tr '[:upper:]' '[:lower:]' | tr -d '-()' | tr -s ' ' > ~/project/transformed_log.txt

Cette commande va :

  1. Convertir toutes les lettres majuscules en minuscules
  2. Supprimer les tirets, les parenthèses et les crochets
  3. Compresser les espaces consécutifs en un seul espace

Pour voir le résultat :

cat ~/project/transformed_log.txt

Vous devriez voir :

 log entry: error404 page not found http

Notez qu'il reste encore des espaces en début et en fin de ligne. Pour les supprimer, nous aurions besoin d'outils supplémentaires comme sed ou awk, qui dépassent le cadre de ce laboratoire.

Maintenant, vous savez comment combiner plusieurs opérations tr pour effectuer des transformations de texte complexes, rendant vos tâches de traitement de texte plus efficaces et plus performantes.

Résumé

Dans ce laboratoire, vous avez appris à utiliser la commande tr, un outil polyvalent pour la manipulation de texte sous Linux. Vous avez exploré ses trois principales fonctionnalités :

  1. Traduction de caractères : Vous avez appris à traduire des caractères d'un ensemble à un autre, par exemple en convertissant les lettres minuscules en majuscules. Cette fonctionnalité est utile pour standardiser les formats de texte et normaliser les données.

  2. Suppression de caractères : Vous avez découvert comment supprimer des caractères spécifiques d'un texte en utilisant l'option -d. Cette capacité est particulièrement précieuse pour nettoyer les données en supprimant les caractères indésirables.

  3. Compression de caractères : Vous avez exploré comment compresser les caractères répétés en une seule instance en utilisant l'option -s. Cette fonctionnalité est particulièrement utile pour traiter les textes contenant des espaces blancs excessifs.

  4. Combinaison d'opérations : Vous avez appris à combiner plusieurs opérations tr pour effectuer des transformations de texte complexes de manière efficace.

Ces compétences constituent une base solide pour le traitement de texte dans les environnements Linux. La commande tr est un outil puissant qui, lorsqu'il est combiné avec d'autres commandes Linux telles que grep, sed et awk, permet une manipulation de texte sophistiquée pour diverses tâches de traitement de données.

En maîtrisant la commande tr, vous avez ajouté un outil essentiel à votre boîte à outils Linux qui vous aidera à gérer les données textuelles plus efficacement et précisément dans vos futurs projets.