Man Tr en français
TR(1) Manuel de l'utilisateur Linux TR(1)
NOM
tr - Transposer ou eliminer des caracteres.
SYNOPSIS
tr [-cst] [--complement] [--squeeze-repeats] [--truncate-set1] chaine_1
chaine_2
tr {-s,--squeeze-repeats} [-c] [--complement] chaine_1
tr {-d,--delete} [-c] chaine_1
tr {-d,--delete} {-s,--squeeze-repeats} [-c] [--complement] chaine_1
chaine_2
La version GNU de tr accepte egalement les options --help et --version.
DESCRIPTION
Cette page de manuel documente la version GNU de tr.
tr copie son entree standard sur sa sortie standard en effectuant l'une
des manipulations suivantes :
o transposer, et eventuellement reunir les caracteres dupliques
de la chaine resultante
o reunir les caracteres dupliques
o supprimer des caracteres
o supprimer des caracteres, et eventuellement reunir les carac-
teres dupliques de la chaine resultante
Les arguments chaine1 et (eventuellement) chaine2 decrivent des ensem-
bles ordonnes de caracteres, que l'on mentionnera plus bas sous les
noms de jeu1 et jeu2. Ces ensembles representent les caracteres de
l'entree standard sur lesquels tr travaillera. L'option --complement
(-c) remplace jeu1 par son complement (tous les caracteres n'appar-
tenant pas a jeu1).
DEFINIR LES ENSEMBLES DE CARACTERES
Le format des arguments chaine1 et chaine2 ressemble a celui des
expressions rationnelles. Il ne s'agit toutefois pas d'expressions
rationnelles, mais simplement de listes de caracteres. La plupart des
caracteres sont representes par eux-memes, neanmoins les chaines peu-
vent egalement contenir des raccourcis plus simples decrits ci-dessous.
Certains de ces raccourcis ne peuvent etre utilises que dans chaine1 ou
que dans chaine2, comme c'est mentionne ci-dessous.
Sequences avec BackSlash. Un backslash suivi d'un caractere non defini
ci-dessous declenche un message d'erreur.
\a Controle-G.
\b Controle-H.
\f Controle-L.
\n Controle-J.
\r Controle-M.
\t Controle-I.
\v Controle-K.
\ooo Le caractere de valeur octale ooo, s'etendant sur 1 a 3
chiffres.
\\ BackSlash.
Intervalles. La notation `m-n' represente tous les caracteres compris
entre m et n, en ordre croissant. m doit etre inferieur a n, sinon une
erreur se produit. Par exemple, `0-9' est equivalent a `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
specifiees avec ce format fonctionneront quand meme si les crochets de
chaine1 correspondent a des crochets identiques de chaine2.
Repetition de caracteres. La notation `[c*n]' dans chaine2 se developpe
en n copies du caractere c. Ainsi, `[y*6]' est equivalent a `yyyyyy'.
La notation `[c*]' dans chaine2 se developpe 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 interprete en octal, sinon en decimal.
Classes de caracteres. La notation `[:nom-classe:]' correspond a
l'ensemble de tous les caracteres appartenant a la classe (predefinie)
nom-classe. Les caracteres ne se presentent pas dans un ordre partic-
ulier, sauf pour les classes `upper' `lower' dont les membres sont en
ordre croissant. Quand les options --delete (-d) et --squeeze-repeats
(-s) sont utilisees simultanement, n'importe quelle classe de carac-
teres peut etre mentionnee dans chaine2. Autrement, seules les classes
`lower' et `upper' sont acceptees dans string2, et ceci seulement si la
classe correspondante (`upper' et `lower', respectivement) est mention-
nee a la meme position relative dans chaine1. Ceci permet de convertir
le type majuscule/minuscule des caracteres. Les noms de classes sont
indiques ci-dessous. Une erreur se produit si l'on tente d'utiliser un
nom de classe invalide.
alnum Lettres et chiffres.
alpha Lettres.
blank Caracteres d'espacement horizontaux.
cntrl caracteres de controle.
digit Chiffres.
graph caracteres imprimables, sauf l'espace.
lower Lettres minuscules.
print caracteres imprimables, y compris l'espace.
punct caracteres de ponctuation.
space Caracteres d'espacement horizontaux ou verticaux.
upper Lettres majuscules.
xdigit Chiffres hexadecimaux.
Classes d'equivalence. La syntaxe `[=c=]' se developpe en l'ensemble
des caracteres equivalents a c, sans ordre particulier. Les classes
d'equivalence sont une invention recente destinee a supporter les
alphabets autres que l'anglais. Mais il n'y a pas de maniere standard
de les definir ou de connaitre leur contenu. Ainsi elles ne sont pas
totalement implementees dans la version GNU de tr. La classe d'equiva-
lence d'un caractere est composee uniquement de ce caractere, ce qui
rend ces classes inutiles actuellement.
[NDT] Il serait pourtant bien pratique que la classe d'equivalence d'un
caractere contienne egalement ses versions accentuees...
TRADUCTION
tr effectue les traductions de caracteres lorsqu'on lui fournit a la
fois chaine1 et chaine2, et si l'on n'utilise pas l'option --delete
(-d). tr transpose chaque caractere d'entree appartenant au jeu1 en un
caractere correspondant du jeu2. Les caracteres non trouves dans jeu1
sont copies sans modification. Quand un caractere apparait plusieurs
fois dans jeu1, et si les caracteres correspondants de jeu2 ne sont pas
toujours les memes, seule la version finale est utilisee. Par exemple
ces deux commandes sont equivalentes :
tr aaa xyz
tr a z
Un usage classique de tr est la conversions de minuscules en majus-
cules. Ceci peut etre realise de nombreuses manieres differentes. 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 utilises en
francais.
tr "aceeeeiioouuACEEEEIIOOUU" "aceeeeiioouuACEEEEIIOOUU"
Quand tr effectue une traduction, jeu1 et jeu2 doivent normalement
avoir la meme longueur. Si jeu1 est plus court que jeu2, les caracteres
supplementaires en fin de jeu2 sont ignores.
D'autre part, si jeu1 est plus long que jeu2, la portabilite n'est pas
assuree. POSIX.2 precise que dans ce cas le comportement est indefini.
La version BSD de tr complete jeu2 jusqu'a la meme longueur que jeu1 en
repetant son dernier caractere de fois autant que necessaire. La ver-
sion System V de tr tronque jeu1 a la meme longueur que jeu2.
Par defaut, la version GNU de tr se comporte comme la version BSD.
Quand l'option --truncate-set1 (-t) est mentionnee, 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 clas-
sique
tr -cs A-Za-z0-9 '\012'
car elle ne convertit que les octets nuls (le premier element du com-
plement de jeu1) en Saut de Ligne, au lieu de convertir tous les carac-
teres non-alphanumeriques.
ELIMINER LES REPETITIONS ET EFFACER DES CARACTERES
Quand seule l'option --delete (-d) est fournie, tr supprime tous les
caracteres d'entree presents dans jeu1.
Quand seule l'option --squeeze-repeats (-s) est fournie, tr remplace
chaque repetitions de caracteres appartenant au jeu1 par une seule
occurrence de ce caractere.
Quand les deux options --delete et --squeeze-repeats sont reclamees en
meme temps, tr effectue d'abord toutes les suppressions des caracteres
de jeu1, puis elimine les repetitions des caracteres appartenant au
jeu2.
L'option --squeeze-repeats peut egalement etre utilisee pendant les
traductions, auquel cas tr effectue d'abord la transposition, puis
elimine les repetitions de caracteres appartenant au jeu2.
Voici quelques exemples destines a illustrer diverses combinaisons des
options :
Supprimer les octets nuls :
tr -d '\000'
Afficher chaque mot sur une ligne independante. Ceci convertit tous les
caracteres non alphanumeriques 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 sequences de sauts de lignes en un seul saut de ligne
(ceci supprime les lignes blanches) :
tr -s '\n'
La version GNU de tr accepte egalement les options supplementaire suiv-
antes :
--help Afficher un message d'aide sur la sortie standard et se terminer
normalement.
--version
Afficher un numero de version sur la sortie standard et se ter-
miner normalement.
MESSAGE D'AVERTISSEMENT
Lorsque la variable d'environnement POSIXLY_CORRECT est validee,
plusieurs messages d'erreurs et d'avertissements sont inhibes, afin
d'assurer une compatibilite stricte avec POSIX.2. Les messages en
question se produisent dans les circonstances suivantes :
1. Quand l'option --delete est utilisee sans l'option
--squeeze-repeats, et si chaine2 est fournie, la version GNU de tr
affiche par defaut un message d'erreur et se termine, car chaine2 ne
serait pas utilisee. Les specifications POSIX indiquent que dans ce cas
chaine2 doit simplement etre ignoree. Ignorer un argument sans prevenir
l'utilisateur n'est pas une bonne idee.
2. Quand un nombre octal ambigu est fourni par une sequence d'echappe-
ment. Par exemple \400 correspond en realite au caractere \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 compatibilite
totale BSD ou System V. Par exemple, il n'y a pas d'option pour inhiber
l'interpretation des sequences POSIX [:alpha:], [=c=], et [c*10].
Remarquez egalement 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.
coreutils 30 juillet 2003 TR(1)
|