TR
Section: Manuel de l utilisateur Linux (1) Updated: 30 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
DÉFINIR LES ENSEMBLES DE CARACTÈRES
TRADUCTION
ÉLIMINER LES RÉPÉTITIONS ET EFFACER DES CARACTÈRES
MESSAGE D'AVERTISSEMENT
TRADUCTION
NOM
tr - Transposer ou éliminer des caractères.
SYNOPSIS
tr
[-cst] [--complement] [--squeeze-repeats]
[--truncate-set1] chaîne_1 chaîne_2
tr
{-s,--squeeze-repeats} [-c] [--complement] chaîne_1
tr
{-d,--delete} [-c] chaîne_1
tr
{-d,--delete} {-s,--squeeze-repeats} [-c] [--complement]
chaîne_1 chaîne_2
La version GNU de
tr
accepte également les options --help et --version.
DESCRIPTION
Cette page de manuel documente la version GNU de
tr.
tr
copie son entrée standard sur sa sortie standard en effectuant l'une des
manipulations suivantes :
-
* transposer, et éventuellement réunir les caractères dupliqués de la chaîne résultante
* réunir les caractères dupliqués
* supprimer des caractères
* supprimer des caractères, et éventuellement réunir les caractères dupliqués de la chaîne résultante
Les arguments chaîne1 et (éventuellement) chaîne2 décrivent des
ensembles ordonnés de caractères, que l'on mentionnera plus bas sous les noms de
jeu1 et jeu2.
Ces ensembles représentent les caractères de l'entrée standard sur lesquels
tr
travaillera.
L'option
--complement
( -c) remplace jeu1 par son complément (tous les caractères n'appartenant
pas à jeu1).
DÉFINIR LES ENSEMBLES DE CARACTÈRES
Le format des arguments chaîne1 et chaîne2 ressemble à celui
des expressions rationnelles. Il ne s'agit toutefois pas d'expressions
rationnelles, mais simplement de listes de caractères.
La plupart des caractères sont représentes par eux-mêmes, néanmoins
les chaînes peuvent également contenir des raccourcis plus simples
décrits ci-dessous. Certains de ces raccourcis ne peuvent être
utilisés que dans chaîne1 ou que dans chaîne2, comme c'est
mentionné ci-dessous.
Séquences avec BackSlash. Un backslash suivi d'un caractère non défini
ci-dessous déclenche un message d'erreur.
- \a
-
Contrôle-G.
- \b
-
Contrôle-H.
- \f
-
Contrôle-L.
- \n
-
Contrôle-J.
- \r
-
Contrôle-M.
- \t
-
Contrôle-I.
- \v
-
Contrôle-K.
- \ooo
-
Le caractère de valeur octale ooo, s'étendant sur 1 à 3 chiffres.
- \\
-
BackSlash.
Intervalles. La notation ` m- n' représente tous les caractères
compris entre m et n, en ordre croissant. m
doit être inférieur à n, sinon une erreur se produit.
Par exemple, `0-9' est équivalent à `0123456789'.
Bien que la version GNU de
tr
ne supporte pas la syntaxe System V qui utilise des crochets pour indiquer
les intervalles, les transpositions spécifiées avec ce format fonctionneront
quand même si les crochets de chaîne1 correspondent à des crochets identiques
de chaîne2.
Répétition de caractères. La notation `[ c* n]' dans
chaîne2 se développe en n copies du caractère c. Ainsi,
`[y*6]' est équivalent à `yyyyyy'. La notation `[ c*]' dans
chaîne2 se développe en autant de copie de c qu'il le faut
pour rendre le jeu2 aussi long que jeu1. Si n commence par 0, il est
interprété en octal, sinon en décimal.
Classes de caractères. La notation `[: nom-classe:]' correspond à
l'ensemble de tous les caractères appartenant à la classe (prédéfinie)
nom-classe.
Les caractères ne se présentent pas dans un ordre particulier, sauf pour
les classes `upper' `lower' dont les membres sont en ordre croissant.
Quand les options
--delete
( -d) et
--squeeze-repeats
( -s) sont utilisées simultanément, n'importe quelle classe de
caractères peut être mentionnée dans chaîne2.
Autrement, seules les classes `lower' et `upper' sont acceptées dans
string2, et ceci seulement si la classe correspondante
(`upper' et `lower', respectivement) est mentionnée à la même position
relative dans chaîne1. Ceci permet de convertir le type
majuscule/minuscule des caractères. Les noms de classes sont indiqués
ci-dessous. Une erreur se produit si l'on tente d'utiliser un nom de
classe invalide.
- alnum
-
Lettres et chiffres.
- alpha
-
Lettres.
- blank
-
Caractères d'espacement horizontaux.
- cntrl
-
caractères de contrôle.
- digit
-
Chiffres.
- graph
-
caractères imprimables, sauf l'espace.
- lower
-
Lettres minuscules.
- print
-
caractères imprimables, y compris l'espace.
- punct
-
caractères de ponctuation.
- space
-
Caractères d'espacement horizontaux ou verticaux.
- upper
-
Lettres majuscules.
- xdigit
-
Chiffres hexadécimaux.
Classes d'équivalence. La syntaxe `[= c=]' se développe en l'ensemble
des caractères équivalents à c, sans ordre particulier.
Les classes d'équivalence sont une invention récente destinée à
supporter les alphabets autres que l'anglais. Mais il n'y a pas
de manière standard de les définir ou de connaître leur contenu.
Ainsi elles ne sont pas totalement implémentées dans la version
GNU de
tr.
La classe d'équivalence d'un caractère est composée uniquement de ce
caractère, ce qui rend ces classes inutiles actuellement.
[NDT] Il serait pourtant bien pratique que la classe d'équivalence
d'un caractère contienne également ses versions accentuées...
TRADUCTION
tr
effectue les traductions de caractères lorsqu'on lui fournit à
la fois chaîne1 et chaîne2, et si l'on n'utilise pas
l'option --delete ( -d).
tr
transpose chaque caractère d'entrée appartenant au jeu1 en un caractère
correspondant du jeu2. Les caractères non trouvés dans jeu1 sont
copies sans modification. Quand un caractère apparaît plusieurs fois
dans jeu1, et si les caractères correspondants de jeu2 ne sont pas
toujours les mêmes, seule la version finale est utilisée.
Par exemple ces deux commandes sont équivalentes :
-
tr aaa xyz
tr a z
Un usage classique de
tr
est la conversions de minuscules en majuscules. Ceci peut être réalisé
de nombreuses manières différentes. En voici trois :
-
tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
tr a-z A-Z
tr '[:lower:]' '[:upper:]'
[NDT] Une utilisation pratique pour nous est la suppression des accents
d'un texte. En voici un exemple supprimant les accents utilisés en français.
-
tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ" "aceeeeiioouuACEEEEIIOOUU"
Quand
tr
effectue une traduction, jeu1 et jeu2 doivent normalement avoir la même
longueur. Si jeu1 est plus court que jeu2, les caractères supplémentaires
en fin de jeu2 sont ignorés.
D'autre part, si jeu1 est plus long que jeu2, la portabilité n'est
pas assurée. POSIX.2 précise que dans ce cas le comportement est
indéfini. La version BSD de
tr
complète jeu2 jusqu'à la même longueur que jeu1 en répétant son dernier
caractère de fois autant que nécessaire. La version System V de
tr
tronque jeu1 à la même longueur que jeu2.
Par défaut, la version GNU de
tr
se comporte comme la version BSD.
Quand l'option --truncate-set1 ( -t) est mentionnée, elle
se comporte comme la version System V.
Cette option n'a pas d'effet pour les autres manipulations que les
traductions.
Le comportement System V de
tr
rend impossible la commande BSD classique
-
tr -cs A-Za-z0-9 '\012'
car elle ne convertit que les octets nuls
(le premier élément du complément de jeu1) en Saut de Ligne,
au lieu de convertir tous les caractères non-alphanumériques.
ÉLIMINER LES RÉPÉTITIONS ET EFFACER DES CARACTÈRES
Quand seule l'option --delete ( -d) est fournie,
tr
supprime tous les caractères d'entrée présents dans jeu1.
Quand seule l'option --squeeze-repeats ( -s) est fournie,
tr
remplace chaque répétitions de caractères appartenant au jeu1 par une
seule occurrence de ce caractère.
Quand les deux options --delete et --squeeze-repeats sont réclamées
en même temps,
tr
effectue d'abord toutes les suppressions des caractères de jeu1, puis
élimine les répétitions des caractères appartenant au jeu2.
L'option --squeeze-repeats peut également être utilisée pendant les
traductions, auquel cas
tr
effectue d'abord la transposition, puis élimine les répétitions de
caractères appartenant au jeu2.
Voici quelques exemples destinés à illustrer diverses combinaisons
des options :
Supprimer les octets nuls :
-
tr -d '\000'
Afficher chaque mot sur une ligne indépendante. Ceci convertit tous les
caractères non alphanumériques en sauts de lignes, puis regroupe
les lignes blanches successives en un seul saut de ligne :
-
tr -cs '[a-zA-Z0-9]' '[\n*]'
Convertir les séquences de sauts de lignes en un seul saut de
ligne (ceci supprime les lignes blanches) :
-
tr -s '\n'
La version GNU de
tr
accepte également les options supplémentaire suivantes :
- --help
-
Afficher un message d'aide sur la sortie standard et se terminer normalement.
- --version
-
Afficher un numéro de version sur la sortie standard et se terminer normalement.
MESSAGE D'AVERTISSEMENT
Lorsque la variable d'environnement POSIXLY_CORRECT est validée, plusieurs
messages d'erreurs et d'avertissements sont inhibés, afin d'assurer une
compatibilité stricte avec POSIX.2.
Les messages en question se produisent dans les circonstances suivantes :
1. Quand l'option
--delete
est utilisée sans l'option
--squeeze-repeats,
et si chaîne2 est fournie, la version GNU de
tr
affiche par défaut un message d'erreur et se termine, car chaîne2 ne
serait pas utilisée. Les spécifications POSIX indiquent que dans ce
cas chaîne2 doit simplement être ignorée. Ignorer un argument sans
prévenir l'utilisateur n'est pas une bonne idée.
2. Quand un nombre octal ambigu est fourni par une séquence d'échappement.
Par exemple \400 correspond en réalité au caractère \40 suivi du
chiffre 0, car la valeur octale 400 ne tient pas dans un octet.
Remarquez que la version GNU de
tr
ne fournit pas de compatibilité totale BSD ou System V. Par exemple,
il n'y a pas d'option pour inhiber l'interprétation des séquences
POSIX [:alpha:], [=c=], et [c*10]. Remarquez également que la version GNU de
tr
ne supprime pas les octets nuls automatiquement contrairement aux
versions UNIX traditionnelles, avec lesquelles il n'y a pas de
moyen de conserver les octets nuls.
TRADUCTION
Christophe Blaess, 1997-2003.
|