Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

tr

La tr programme est utilisé pour translittérer personnages. Nous pouvons considérer cela comme une sorte d'opération de recherche et de remplacement basée sur des caractères. La translittération est le processus de changement de caractères d'un alphabet à un autre. Par exemple, la conversion de caractères de minuscules en majuscules est une translittération. Nous pouvons effectuer une telle conversion avec tr comme suit:


[moi@linuxbox ~]$ echo "lettres minuscules" | tr az de A à Z

MINUSCULES

[moi@linuxbox ~]$ echo "lettres minuscules" | tr az de A à Z

MINUSCULES


Comme on peut le voir, tr fonctionne sur l'entrée standard et sort ses résultats sur la sortie standard. tr accepte deux arguments : un ensemble de caractères à partir duquel effectuer la conversion et un ensemble correspondant de caractères vers lesquels effectuer la conversion. Les jeux de caractères peuvent être exprimés de l'une des trois manières suivantes :

1. Une liste énumérée. Par exemple, ABCDEFGHIJKLMNOPQRSTUVWXYZ

2. Une plage de caractères. Par exemple, A-Z. Notez que cette méthode est parfois sujette aux mêmes problèmes que d'autres commandes, en raison de l'ordre de classement des paramètres régionaux, et doit donc être utilisée avec prudence.

3. Classes de caractères POSIX. Par exemple, [:supérieur:].

Dans la plupart des cas, les deux jeux de caractères doivent être de longueur égale ; cependant, il est possible que le premier ensemble soit plus grand que le second, en particulier si nous souhaitons convertir plusieurs caractères en un seul caractère :



[moi@linuxbox ~]$ echo "lettres minuscules" | tr [:inférieur:] A

AAAAAAAAAAAAAAAAA

[moi@linuxbox ~]$ echo "lettres minuscules" | tr [:inférieur:] A

AAAAAAAAAAAAAAAAA


En plus de la translittération, tr permet aux caractères d'être simplement supprimés du flux d'entrée. Plus tôt dans ce chapitre, nous avons abordé le problème de la conversion de fichiers texte MS-DOS en texte de style Unix. Pour effectuer cette conversion, les caractères de retour chariot doivent être supprimés à la fin de chaque ligne. Ceci peut être effectué avec tr comme suit:

tr -d '\r' fichier_dos > fichier_unix


De fichier_dos est le fichier à convertir et fichier_unix est le résultat. Cette forme de commande utilise la séquence d'échappement \r pour représenter le caractère de retour chariot. Pour voir une liste complète des séquences et des classes de caractères tr prend en charge, essayez :


[moi@linuxbox ~]$ tr --aide

[moi@linuxbox ~]$ tr --aide


image

ROT13 : L'anneau décodeur pas si secret

Une utilisation amusante de tr est de performer Encodage ROT13 du texte. ROT13 est un type de chiffrement trivial basé sur un simple chiffrement de substitution. Appeler ROT13 « cryptage » est généreux ; « l'obscurcissement du texte » est plus précis. Il est parfois utilisé sur du texte pour masquer un contenu potentiellement offensant. La méthode déplace simplement chaque caractère de 13 places dans l'alphabet. Comme il s'agit de la moitié des 26 caractères possibles, exécuter l'algorithme une deuxième fois sur le texte le restaure dans sa forme d'origine. Pour effectuer cet encodage avec tr:

echo "texte secret" | tr a-zA-Z n-za-mN-ZA-M

frperg grkg

L'exécution de la même procédure une deuxième fois entraîne la traduction :

echo "frperg grkg" | tr a-zA-Z n-za-mN-ZA-M

texte secret

Un certain nombre de programmes de messagerie et de lecteurs de nouvelles Usenet prennent en charge l'encodage ROT13. Wikipédia contient un bon article sur le sujet :

http://en.wikipedia.org/wiki/ROT13


tr peut également effectuer un autre tour. En utilisant l'option -s, tr peut « serrer » (supprimer) les instances répétées d'un caractère :



[moi@linuxbox ~]$ echo "aaabbcccc" | tr -s ab

abccc

[moi@linuxbox ~]$ echo "aaabbcccc" | tr -s ab

abccc


Ici, nous avons une chaîne contenant des caractères répétés. En spécifiant l'ensemble « ab » à tr, nous éliminons les occurrences répétées des lettres dans l'ensemble, tout en laissant le caractère manquant dans l'ensemble (« c ») inchangé. Notez que les caractères répétés doivent être adjacents. S'ils ne le sont pas :


[moi@linuxbox ~]$ echo "abcabcabc" | tr -s ab

abcabcabc

[moi@linuxbox ~]$ echo "abcabcabc" | tr -s ab

abcabcabc


la compression n'aura aucun effet.


Meilleur système d'exploitation Cloud Computing chez OnWorks :