Menu Fermer

La commande TR : utilisations et exemples

La commande tr sous Linux et UNIX est un utilitaire de ligne de commande permettant de traduire ou de supprimer des caractères.
Avec AWK, cat, sed, c’est une commande de base disponible sur la plupart des distributions Linux pour traiter et manipuler les textes.

Elle prend en charge une gamme de transformations, y compris les majuscules en minuscules, la compression de caractères répétés, la suppression de caractères spécifiques et la recherche et le remplacement de base. Il peut être utilisé avec des pipes UNIX pour prendre en charge une traduction plus complexe.

Dans ce tutoriel je vous montre comment utiliser la commande TR avec des exemples.

La commande TR : utilisations et exemples

Comment utiliser la commande TR

TR est une commande utilisé pour traduire, convertir et/ou supprimer des caractères de l’entrée standard, écriture sur la sortie standard.
La syntaxe est la suivante :

tr [OPTION] SET1 [SET2]

tr fonctionne avec un texte en entrée que l’on peut par exemple fournir avec la commande echo ou la commande cat :

echo texte|tr [OPTION] SET1 [SET2]
cat fichier|tr [OPTION] SET1 [SET2]

Mais on peut aussi spécifier le fichier directement comme ceci :

tr [OPTION] SET1 [SET2] fichier.txt

Les SET sont spécifiés sous forme de chaînes de caractères, chiffres ou séquences de jeux (voir plus bas).
tr accepte deux ensembles de caractères, généralement de même longueur.
Puis la commande remplace les caractères des premiers ensembles par les caractères correspondants du deuxième ensemble.

Par exemple, ci-dessous, tr va remplacer les lettre i par un a, les lettres t par un m et ainsi de suite si l’on fournit un ensemble de caractères plus étendu.

echo "tilekil.cot"|tr it am
malekal.com

La commande est sensible à la casse et donc ci-dessous, la première lettre T n’est pas remplacée par le m :

echo "Tilekil.cot"|tr it am
Talekal.com
Comment utiliser la commande TR sur Linux

Mais on peut aussi utiliser des séquences de jeux comme :

SETSDESCRIPTION
[CHAR*REPEAT]REPEAT copies de CHAR, REPEAT octal si commençant par 0
[:alnum:]Toutes les lettres et chiffres
[:alpha:]Toutes les lettres
[:blank:]Tous les espaces horizontaux
[:cntrl:]Tous les caractères de contrôle
[:digit:]Tous les chiffres
[:graph:]Tous les caractères imprimables, sans compter l’espace
[:lower:]Toutes les lettres minuscules
[:print:]Tous les caractères imprimables, y compris l’espace
[:punct:]Tous les caractères de ponctuations
[:space:]Tous les espaces horizontaux ou verticaux
[:upper:]Toutes les lettres majuscules
[:xdigit:]Tous les chiffres hexadécimaux
[=CHAR=]Tous les caractères équivalents à CHAR
\tLes tabulations
\nLes lignes blanches
\vLa tabulation verticale
Liste des jeux de la commande TR

Enfin la commande accepte quelques options dont voici la liste :

OPTIONSDESCRIPTION
-c
Complète l’ensemble de caractères de la chaîne, c’est-à-dire que les opérations s’appliquent aux caractères qui ne font pas partie de l’ensemble donné
-d
Supprimer les caractères du premier ensemble de la sortie.
-sRemplacer les caractères répétés répertoriés dans l’ensemble 1 par une seule occurrence
-tTronquer set1
Les options de la commande tr

La commande TR : utilisations et exemples

Comment convertir les minuscules en majuscules

Dans cet exemple, nous souhaitons remplacer tous les caractères en minuscules par des caractères en majuscules.
Pour cela, on utilise la commande tr en spécifiant une expression régulière avec toutes les minuscules en SET1 et les caractères en majuscules en sortie.

echo "bienvenue sur malekal.com"| tr '[a-z]' '[A-Z]'
BIENVENUE SUR MALEKAL.COM
Comment convertir les minuscules en majuscules avec la commande tr

Comment convertir les espaces blancs en tabulations

Dans cette autre exemple, on remplace tous les espaces par des tabulations à l’aide de la commande tr.
Pour y parvenir, on utilise [:space:] en SET1 pour cibler tous les espaces que l’on remplace par des tabulations à l’aide de \t.

echo "Bienvenue sur malekal.com"| tr [:space:] '\t'
Bienvenue       sur     malekal.com     
Comment convertir les espaces blancs en tabulations avec la commande tr

Comment convertir les virgules en point virgules

Quand on manipule des fichiers CSV, on peut avoir besoin de modifier le séparateur.
Par exemple pour remplacer les virgules par des points virgules :

echo "Le, séparateur, est, une, virgule"|tr ',' ';'
Le; séparateur; est; une; virgule
Comment convertir les virgules en point virgules avec la commande tr

Comment écrire le $PATH dans des lignes séparés

La variable d’environnement $PATH est une liste de répertoires délimités par des deux-points qui indique au shell les répertoires dans lesquels rechercher les fichiers exécutables lorsque vous tapez une commande.

On peut utilise la commande tr pour remplacer le caractère : par le caractère nouvelle ligne \n afin d’écrire les répertoires de la variable PATH ligne par ligne :

echo $PATH | tr  ':' '\n'
Comment écrire le $PATH dans des lignes séparés avec la commande tr

Comment supprimer une répétition de caractères à l’aide de -s

Pour supprimer un caractère qui se répète, on utilise l’option -s.
Par exemple pour retirer tous les espaces consécutifs :

echo "Bienvenue     sur         malekal.com"| tr -s '[:space:]'
Bienvenue sur malekal.com
Comment supprimer une répétition de caractères à l'aide de -s de la commande tr

Comment supprimer tous les chiffres ou espaces

Pour supprimer tous les chiffres d’un texte, utilisez l’option -d et le JEU [:digit] :

echo "Mon ID est 5456556" | tr -d [:digit:]
Mon ID est
Comment supprimer tous les chiffres avec la commande tr

Pour supprimer tous les espaces d’un texte :

echo "Bienvenue     sur         malekal.com"| tr -d '[:space:]'
Bienvenuesurmalekal.com

Comment capturer les chiffres d’un texte

A l’inverse, si vous souhaitez capturer que les chiffres, utilisez l’option -cd.
L’option -c permettant la négation :

echo "Mon ID est 5456556" | tr -cd [:digit:]
5456556

Comment supprimer toutes les lignes blanches d’un fichier

tr vous permet aussi de supprimer les lignes blanches d’un fichier.
Pour cela, on utilise l’option -s pour cibler les lignes blanches (\n).
On utilise aussi le symbole de redirection < pour transmettre le contenu fichier.txt à la commande tr.
Enfin la redirection > écrit la sortie de la commande dans nouveau_fichier.txt

tr -s '\n' < fichier.txt > nouveau_fichier.txt

Comment mettre un retour à la ligne après chaque mot

Dans ce dernier exemple, on insère un retour à la ligne après chaque mot.
Pour cela, on demande à la commande tr de remplacer tous les caractères non alphanumériques par le caractère par le caractère nouvelle ligne \n

echo 'Bienvenue sur malekal.com' | tr -cs '[:alnum:]' '\n'
Bienvenue
sur
malekal
com
Comment mettre un retour à la ligne après chaque mot avec la commande tr