La vraie puissance de Linux est qu'il existe de nombreux programmes/utilitaires créés pour nous faciliter la vie. Lorsque vous écrivez beaucoup de scripts shell dans votre environnement, cet ensemble de programmes est pratique, où vous utiliserez ces programmes pour manipuler votre entrée ou votre sortie dans vos scripts. Un de ces utilitaires est tr
, qui signifie traduire . Comme son nom l'indique, la commande tr est utilisée pour traduire, compresser et supprimer des caractères de l'entrée standard, en écrivant sur la sortie standard des systèmes d'exploitation Linux et Unix.
Dans cet article, nous apprendrons l'utilisation de la commande tr avec des exemples pratiques. À la fin de ce guide, vous serez à l'aise avec l'utilisation de la commande tr et vous saurez dans quel scénario l'utilisation de cette commande serait bénéfique.
syntaxe de la commande tr et aide
Pour connaître la syntaxe et la liste des arguments pris en charge par la commande tr, reportez-vous à la page de manuel ou utilisez --help
drapeau avec tr
commande.
$ man tr
$ tr --help
Le tr
la commande accepte deux arguments sous la forme de SET1 et SET2 où SET1 seront des caractères d'entrée qui seront traduits par des caractères dans SET2 . Lorsque certains drapeaux sont passés à la commande tr, SET2 peut éventuellement être utilisé.
tr [OPTION]… SET1 [SET2]
Exemple 1 - Traduire avec la commande tr
Vous trouverez ci-dessous un exemple simple d'utilisation du tr
commande. Le tr
la commande est canalisée avec le echo
commande et "ost" en minuscules est converti en majuscule "OST" .
La conversion ici se fera en fonction de la position des caractères dans deux ensembles. Le premier caractère de SET1 sera remplacé par le premier caractère de SET2 (o->O ), de même pour tous les caractères (s->S ,t->T ).
$ echo "ostechnix" | tr "ost" "OST"
OSTechnix
Suggestion de lecture :
- La commande Bash Echo expliquée avec des exemples sous Linux
Exemple 2 - Jeux de caractères et caractères spéciaux
Le tr
La commande offre l'utilisation de jeux de caractères, ce qui rend la conversion très facile. Le tr
La commande peut également interpréter des caractères spéciaux comme (\n
,\t
,\v
) qui peut être traduit avec différents caractères.
Voyons comment utiliser le jeu de caractères. Dans l'exemple ci-dessous, j'ai des chaînes, des entiers et des caractères de ponctuation. les caractères de ponctuation sont remplacés par des points (.
) en utilisant "[:punct:]"
jeu de caractères.
$ echo "Ubuntu 20.04 #$%^" | tr "[:punct:]" "."
Exemple 3 - Conversion de casse
Lorsque vous travaillez avec des chaînes, vous souhaiterez peut-être changer la casse de la chaîne de bas en haut ou vice versa. Utilisation du tr
commande, vous pouvez effectuer la conversion de casse de différentes manières.
Dans le premier cas, vous pouvez taper a à z dans les ensembles 1 et 2.
$ echo "ostechnix" | tr "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
OSTECHNIX
Veuillez noter qu'il ne s'agit pas d'un moyen préféré.
Au lieu de saisir tous les caractères, vous pouvez également utiliser des plages (par exemple, a-z , A-Z ).
$ echo "ostechnix" | tr "a-z" "A-Z" # Minuscule à majuscule
OSTECHNIX
$ echo "OSTECHNIX" | tr "A-Z" "a-z" # majuscule à minuscule
ostechnix
Les classes de caractères peuvent également être utilisées à la place des deux méthodes ci-dessus.
$ echo "OSTECHNIX" | tr "[:supérieur :]" "[:inférieur :]"
ostechnix
$ echo "ostechnix" | tr "[:inférieur :]" "[:supérieur :]"
OSTECHNIX
Exemple 4 - Supprimer des caractères
Il existe un ensemble d'arguments optionnels que tr
prend en charge pour effectuer diverses actions.
Un de ces drapeaux est "-d
ou --delete
" qui supprimera les caractères donnés dans SET1.
Ci-dessous se trouve l'entrée où j'ai trois adresses IP avec des espaces blancs dans chaque ligne et des onglets (2) dans la troisième ligne. Maintenant en utilisant le -d
flag vous pouvez nettoyer les espaces blancs.
Exécutez la commande ci-dessous qui supprimera tous les espaces blancs. Un point important à noter ici est que les onglets ne sont pas supprimés, mais seuls les espaces sont supprimés.
$ tr -d " "Si vous souhaitez supprimer à la fois l'espace et les tabulations (espaces blancs horizontaux), vous pouvez utiliser le
"[:blank:]"
jeu de caractères.$ tr -d "[:blank:]"Vous pouvez également utiliser le
"[:space:]"
jeu de caractères pour supprimer les espaces blancs horizontaux et verticaux.$ tr -d "[:space:]"Exemple 5 - Répétitions Squeeze
Lorsque le drapeau "
-s
ou--squeeze-repeats
" est utilisé, les caractères répétés donnés dans SET1 seront remplacés par une seule occurrence du caractère. Dans l'exemple ci-dessous, vous pouvez voir que j'ai utilisé 4 égal à (=
) signe. Maintenant-s
remplacera 4 (=
) avec 1 (=
).$ echo "IP de production ====192.168.1.10" | tr -s "="IP de production =192.168.1.10Vous trouverez ci-dessous un autre exemple où les caractères de nouvelle ligne (
\n
) sont pressés.$ cat tr_test.txt | tr -s "\n"Exemple 6 - Complément
Lorsque le
-c
flag est utilisé, il fera une traduction inverse pour l'ensemble donné. Dans l'exemple ci-dessous, le tr traduira tous les alphabets en"*"
en temps normal. Mais quand-c
est utilisé, l'opération sera inversée. À part les alphabets, tous les autres caractères seront remplacés par"*"
.$ echo "Le numéro d'employé est 1267890" | tr -c "[:alpha:]" "*"Vous pouvez combiner cela avec d'autres drapeaux pour obtenir certains résultats. Par exemple lorsque vous combinez avec le
-d
flag, il effectuera une opération de suppression inverse.$ echo "Le numéro d'employé est 1267890" | tr -cd "[:digit:]"Remarque : Dans l'exemple ci-dessus, vous pouvez voir que le caractère de nouvelle ligne est également traduit/supprimé. Lorsque vous utilisez cette méthode, notez ce point et continuez.
Exemple 7 - Rediriger la sortie
Dans toutes les sections précédentes, nous avons lu l'entrée du fichier et effectué un traitement avec le
tr
commande et la sortie est envoyée au terminal. Si vous souhaitez rediriger la sortie vers un fichier au lieu d'un terminal, utilisez l'opérateur de redirection.$ tr -s "\n"new_tr_test.txt $ cat new_tr_test.txt
Lire connexe :
- La redirection bash expliquée avec des exemples
Conclusion
Dans cet article, je vous ai expliqué comment utiliser le
tr
commande. Sous Linux, il existe toujours plusieurs façons d'obtenir la même chose. Tout ce que nous avons montré dans cet article peut également être réalisé avec d'autres programmes commesed
,awk
, etc. Mais connaître ces commandes et les différentes manières vous aidera à décider de la bonne situation pour utiliser la bonne commande/programme.