Dans un fichier de +/- 700000 records d=E9limit=E9s je dois filtrer les
champs 2 et 3 pour ne garder qu'une occurence de caract=E8res
cons=E9cutifs.
ex: ZOO doit devenir ZO de m=EAme que ZOOOOOOOOO
Tous les caract=E8res des deux cha=EEnes sont des majuscules de A =E0 Z.
La plateforme est un solaris 8 avec les outils standard plus perl et
nawk.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Élodie
sed 1,$s/a/b/g change tous les caractères a en b de la première à la dernière ligne du fichier, dans (g) tout le fichier.
regarde sur internet la commande sed pour plus de détails
"chrirama" a écrit dans le message de news:
Dans un fichier de +/- 700000 records délimités je dois filtrer les champs 2 et 3 pour ne garder qu'une occurence de caractères consécutifs. ex: ZOO doit devenir ZO de même que ZOOOOOOOOO Tous les caractères des deux chaînes sont des majuscules de A à Z. La plateforme est un solaris 8 avec les outils standard plus perl et nawk.
Quelqu'un a-t'il une idée? Merci.
sed 1,$s/a/b/g
change tous les caractères a en b de la première à la dernière ligne du
fichier, dans (g) tout le fichier.
regarde sur internet la commande sed pour plus de détails
"chrirama" <chrirama@chello.be> a écrit dans le message de news:
1181504207.303445.246590@q69g2000hsb.googlegroups.com...
Dans un fichier de +/- 700000 records délimités je dois filtrer les
champs 2 et 3 pour ne garder qu'une occurence de caractères
consécutifs.
ex: ZOO doit devenir ZO de même que ZOOOOOOOOO
Tous les caractères des deux chaînes sont des majuscules de A à Z.
La plateforme est un solaris 8 avec les outils standard plus perl et
nawk.
sed 1,$s/a/b/g change tous les caractères a en b de la première à la dernière ligne du fichier, dans (g) tout le fichier.
regarde sur internet la commande sed pour plus de détails
"chrirama" a écrit dans le message de news:
Dans un fichier de +/- 700000 records délimités je dois filtrer les champs 2 et 3 pour ne garder qu'une occurence de caractères consécutifs. ex: ZOO doit devenir ZO de même que ZOOOOOOOOO Tous les caractères des deux chaînes sont des majuscules de A à Z. La plateforme est un solaris 8 avec les outils standard plus perl et nawk.
Quelqu'un a-t'il une idée? Merci.
Stephane Chazelas
2007-06-10, 12:36(-07), chrirama:
Dans un fichier de +/- 700000 records délimités je dois filtrer les champs 2 et 3 pour ne garder qu'une occurence de caractères consécutifs. ex: ZOO doit devenir ZO de même que ZOOOOOOOOO Tous les caractères des deux chaînes sont des majuscules de A à Z. La plateforme est un solaris 8 avec les outils standard plus perl et nawk.
Quelqu'un a-t'il une idée?
LC_ALL=C tr -s A-Z
Avec Solaris, il faut peut-etre
LC_ALL=C tr -s '[A-Z]'
-- Stéphane
2007-06-10, 12:36(-07), chrirama:
Dans un fichier de +/- 700000 records délimités je dois filtrer les
champs 2 et 3 pour ne garder qu'une occurence de caractères
consécutifs.
ex: ZOO doit devenir ZO de même que ZOOOOOOOOO
Tous les caractères des deux chaînes sont des majuscules de A à Z.
La plateforme est un solaris 8 avec les outils standard plus perl et
nawk.
Dans un fichier de +/- 700000 records délimités je dois filtrer les champs 2 et 3 pour ne garder qu'une occurence de caractères consécutifs. ex: ZOO doit devenir ZO de même que ZOOOOOOOOO Tous les caractères des deux chaînes sont des majuscules de A à Z. La plateforme est un solaris 8 avec les outils standard plus perl et nawk.
Quelqu'un a-t'il une idée?
LC_ALL=C tr -s A-Z
Avec Solaris, il faut peut-etre
LC_ALL=C tr -s '[A-Z]'
-- Stéphane
Olivier Miakinen
[ je remets les articles dans l'ordre et je rajoute les chevrons de citation ]
Dans un fichier de +/- 700000 records délimités je dois filtrer les champs 2 et 3 pour ne garder qu'une occurence de caractères consécutifs. ex: ZOO doit devenir ZO de même que ZOOOOOOOOO Tous les caractères des deux chaînes sont des majuscules de A à Z. La plateforme est un solaris 8 avec les outils standard plus perl et nawk.
Le 10/06/2007 22:03, Élodie a répondu :
sed 1,$s/a/b/g change tous les caractères a en b de la première à la dernière ligne du fichier, dans (g) tout le fichier.
Je ne sais pas si on peut le faire avec sed, mais l'idéal serait une expression rationnelle pouvant réutiliser une portion de chaîne reconnue, non pas seulement dans la partie droite, mais aussi dans la partie gauche, comme peut le faire perl.
P.-S. 2 : pour aider ton Outlook Express à citer correctement (en particulier à conserver les chevrons même quand il répond à des articles en quoted-printable), je te conseille l'indispensable OE Quotefix. Voir <http://www.aminautes.org/forums/configurer/oe/QF_doc.html>.
[ je remets les articles dans l'ordre et je rajoute les chevrons de
citation ]
Dans un fichier de +/- 700000 records délimités je dois filtrer les
champs 2 et 3 pour ne garder qu'une occurence de caractères
consécutifs.
ex: ZOO doit devenir ZO de même que ZOOOOOOOOO
Tous les caractères des deux chaînes sont des majuscules de A à Z.
La plateforme est un solaris 8 avec les outils standard plus perl et
nawk.
Le 10/06/2007 22:03, Élodie a répondu :
sed 1,$s/a/b/g
change tous les caractères a en b de la première à la dernière ligne du
fichier, dans (g) tout le fichier.
Je ne sais pas si on peut le faire avec sed, mais l'idéal serait
une expression rationnelle pouvant réutiliser une portion de chaîne
reconnue, non pas seulement dans la partie droite, mais aussi dans
la partie gauche, comme peut le faire perl.
Un truc du genre :
sed -e 's/([A-Z])1+/1/g'
P.-S. 1 : Merci de citer à l'endroit.
Voir <http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html>.
P.-S. 2 : pour aider ton Outlook Express à citer correctement (en
particulier à conserver les chevrons même quand il répond à des articles
en quoted-printable), je te conseille l'indispensable OE Quotefix.
Voir <http://www.aminautes.org/forums/configurer/oe/QF_doc.html>.
[ je remets les articles dans l'ordre et je rajoute les chevrons de citation ]
Dans un fichier de +/- 700000 records délimités je dois filtrer les champs 2 et 3 pour ne garder qu'une occurence de caractères consécutifs. ex: ZOO doit devenir ZO de même que ZOOOOOOOOO Tous les caractères des deux chaînes sont des majuscules de A à Z. La plateforme est un solaris 8 avec les outils standard plus perl et nawk.
Le 10/06/2007 22:03, Élodie a répondu :
sed 1,$s/a/b/g change tous les caractères a en b de la première à la dernière ligne du fichier, dans (g) tout le fichier.
Je ne sais pas si on peut le faire avec sed, mais l'idéal serait une expression rationnelle pouvant réutiliser une portion de chaîne reconnue, non pas seulement dans la partie droite, mais aussi dans la partie gauche, comme peut le faire perl.
P.-S. 2 : pour aider ton Outlook Express à citer correctement (en particulier à conserver les chevrons même quand il répond à des articles en quoted-printable), je te conseille l'indispensable OE Quotefix. Voir <http://www.aminautes.org/forums/configurer/oe/QF_doc.html>.
Olivier Miakinen
LC_ALL=C tr -s A-Z
Avec Solaris, il faut peut-etre
LC_ALL=C tr -s '[A-Z]'
Ah oui, c'est bien la méthode la plus simple. Je n'avais pas lu ton article avant de rédiger le mien.
D'ailleurs je ne connaissais aucune des options de la commande tr, pas seulement l'option -s ou --squeeze-repeats, mais aussi les options -d (--delete) et -t (--truncate-set1), ni surtout l'option -c, et je ne comprends pas le 'man' concernant cette option. Quelqu'un saurait me l'expliquer ?
<cit.> NAME tr - translate or delete characters
SYNOPSIS tr [OPTION]... SET1 [SET2]
DESCRIPTION Translate, squeeze, and/or delete characters from standard input, writing to standard output.
-c, -C, --complement first complement SET1
-d, --delete delete characters in SET1, do not translate
-s, --squeeze-repeats replace each input sequence of a repeated character that is listed in SET1 with a single occurrence of that character
-t, --truncate-set1 first truncate SET1 to length of SET2 </cit.>
LC_ALL=C tr -s A-Z
Avec Solaris, il faut peut-etre
LC_ALL=C tr -s '[A-Z]'
Ah oui, c'est bien la méthode la plus simple. Je n'avais pas lu ton
article avant de rédiger le mien.
D'ailleurs je ne connaissais aucune des options de la commande tr, pas
seulement l'option -s ou --squeeze-repeats, mais aussi les options -d
(--delete) et -t (--truncate-set1), ni surtout l'option -c, et je ne
comprends pas le 'man' concernant cette option. Quelqu'un saurait me
l'expliquer ?
<cit.>
NAME
tr - translate or delete characters
SYNOPSIS
tr [OPTION]... SET1 [SET2]
DESCRIPTION
Translate, squeeze, and/or delete characters from standard input,
writing to standard output.
-c, -C, --complement
first complement SET1
-d, --delete
delete characters in SET1, do not translate
-s, --squeeze-repeats
replace each input sequence of a repeated character
that is listed in SET1 with a single occurrence of that
character
-t, --truncate-set1
first truncate SET1 to length of SET2
</cit.>
Ah oui, c'est bien la méthode la plus simple. Je n'avais pas lu ton article avant de rédiger le mien.
D'ailleurs je ne connaissais aucune des options de la commande tr, pas seulement l'option -s ou --squeeze-repeats, mais aussi les options -d (--delete) et -t (--truncate-set1), ni surtout l'option -c, et je ne comprends pas le 'man' concernant cette option. Quelqu'un saurait me l'expliquer ?
<cit.> NAME tr - translate or delete characters
SYNOPSIS tr [OPTION]... SET1 [SET2]
DESCRIPTION Translate, squeeze, and/or delete characters from standard input, writing to standard output.
-c, -C, --complement first complement SET1
-d, --delete delete characters in SET1, do not translate
-s, --squeeze-repeats replace each input sequence of a repeated character that is listed in SET1 with a single occurrence of that character
-t, --truncate-set1 first truncate SET1 to length of SET2 </cit.>
chrirama
On 10 juin, 22:07, Stephane Chazelas wrote:
2007-06-10, 12:36(-07), chrirama:
Dans un fichier de +/- 700000 records délimités je dois filtrer les champs 2 et 3 pour ne garder qu'une occurence de caractères consécutifs. ex: ZOO doit devenir ZO de même que ZOOOOOOOOO Tous les caractères des deux chaînes sont des majuscules de A à Z. La plateforme est un solaris 8 avec les outils standard plus perl et nawk.
Quelqu'un a-t'il une idée?
LC_ALL=C tr -s A-Z
Avec Solaris, il faut peut-etre
LC_ALL=C tr -s '[A-Z]'
-- Stéphane
Merci 1000 fois.
On 10 juin, 22:07, Stephane Chazelas <cette.adre...@est.invalid>
wrote:
2007-06-10, 12:36(-07), chrirama:
Dans un fichier de +/- 700000 records délimités je dois filtrer les
champs 2 et 3 pour ne garder qu'une occurence de caractères
consécutifs.
ex: ZOO doit devenir ZO de même que ZOOOOOOOOO
Tous les caractères des deux chaînes sont des majuscules de A à Z.
La plateforme est un solaris 8 avec les outils standard plus perl et
nawk.
Dans un fichier de +/- 700000 records délimités je dois filtrer les champs 2 et 3 pour ne garder qu'une occurence de caractères consécutifs. ex: ZOO doit devenir ZO de même que ZOOOOOOOOO Tous les caractères des deux chaînes sont des majuscules de A à Z. La plateforme est un solaris 8 avec les outils standard plus perl et nawk.
Quelqu'un a-t'il une idée?
LC_ALL=C tr -s A-Z
Avec Solaris, il faut peut-etre
LC_ALL=C tr -s '[A-Z]'
-- Stéphane
Merci 1000 fois.
Thierry B
--{ Olivier Miakinen a plopé ceci: }--
D'ailleurs je ne connaissais aucune des options de la commande tr, pas seulement l'option -s ou --squeeze-repeats, mais aussi les options -d (--delete) et -t (--truncate-set1), ni surtout l'option -c, et je ne comprends pas le 'man' concernant cette option. Quelqu'un saurait me l'expliquer ?
Ah! vraiment très étrange en fait. Je ne connais pas l'option -c et je viens de l'essayer. A première vue, délicate à utiliser.
Premier essai: on vire tout ce qui est 'c' ou 'd' ou 'e'. Jusque là, rien de bien secret. Le tr -d 'r' pour nettoyer un fichier messydos, c'est connu depuis le siècle dernier.
Par contre, le second est plus sioux: on ne garde que le complément de 'cde', c'est à dire 'c' ou 'd' ou 'e'. Et là, paf, dans la manip, on a perdu le eol :)
Les commandes Unix, même les plus simples, sont toujours vraiment étonnantes. A moins que ce ne soit la sauce GNU qui leur donne cette saveur étrange :)
-- Some of the names IBM uses are REENTRANT, REFRESHABLE, and SERIALLY REUSABLE. It isn't obvious to me that PURE can't be only SERIALLY REUSABLE, unless PURE implies RECURSIVE.
--{ Olivier Miakinen a plopé ceci: }--
D'ailleurs je ne connaissais aucune des options de la commande tr, pas
seulement l'option -s ou --squeeze-repeats, mais aussi les options -d
(--delete) et -t (--truncate-set1), ni surtout l'option -c, et je ne
comprends pas le 'man' concernant cette option. Quelqu'un saurait me
l'expliquer ?
Ah! vraiment très étrange en fait. Je ne connais pas l'option
-c et je viens de l'essayer. A première vue, délicate à utiliser.
Premier essai: on vire tout ce qui est 'c' ou 'd' ou 'e'.
Jusque là, rien de bien secret. Le tr -d 'r' pour nettoyer
un fichier messydos, c'est connu depuis le siècle dernier.
Par contre, le second est plus sioux: on ne garde que le
complément de 'cde', c'est à dire 'c' ou 'd' ou 'e'. Et là,
paf, dans la manip, on a perdu le eol :)
Les commandes Unix, même les plus simples, sont toujours
vraiment étonnantes. A moins que ce ne soit la sauce GNU
qui leur donne cette saveur étrange :)
--
Some of the names IBM uses are REENTRANT, REFRESHABLE,
and SERIALLY REUSABLE. It isn't obvious to me that PURE can't
be only SERIALLY REUSABLE, unless PURE implies RECURSIVE.
D'ailleurs je ne connaissais aucune des options de la commande tr, pas seulement l'option -s ou --squeeze-repeats, mais aussi les options -d (--delete) et -t (--truncate-set1), ni surtout l'option -c, et je ne comprends pas le 'man' concernant cette option. Quelqu'un saurait me l'expliquer ?
Ah! vraiment très étrange en fait. Je ne connais pas l'option -c et je viens de l'essayer. A première vue, délicate à utiliser.
Premier essai: on vire tout ce qui est 'c' ou 'd' ou 'e'. Jusque là, rien de bien secret. Le tr -d 'r' pour nettoyer un fichier messydos, c'est connu depuis le siècle dernier.
Par contre, le second est plus sioux: on ne garde que le complément de 'cde', c'est à dire 'c' ou 'd' ou 'e'. Et là, paf, dans la manip, on a perdu le eol :)
Les commandes Unix, même les plus simples, sont toujours vraiment étonnantes. A moins que ce ne soit la sauce GNU qui leur donne cette saveur étrange :)
-- Some of the names IBM uses are REENTRANT, REFRESHABLE, and SERIALLY REUSABLE. It isn't obvious to me that PURE can't be only SERIALLY REUSABLE, unless PURE implies RECURSIVE.
Olivier Miakinen
Ah! vraiment très étrange en fait. Je ne connais pas l'option -c et je viens de l'essayer. A première vue, délicate à utiliser.
J'ai essayé dans Cygwin. C'est encore plus rigolo quand on saisit plusieurs lignes, puisqu'alors il y a un « flush » à chaque ligne quand on garde les sauts de ligne, mais pas dans le cas contraire.
$ tr -d aeiou Ceci est Cc st un essai n ss $ tr -c -d aeiou Ceci est un essai eieueai$
Les commandes Unix, même les plus simples, sont toujours vraiment étonnantes.
Oui. ;-)
A moins que ce ne soit la sauce GNU qui leur donne cette saveur étrange :)
J'essaierai demain sur AIX, pour voir.
Ah! vraiment très étrange en fait. Je ne connais pas l'option
-c et je viens de l'essayer. A première vue, délicate à utiliser.
J'ai essayé dans Cygwin. C'est encore plus rigolo quand on saisit
plusieurs lignes, puisqu'alors il y a un « flush » à chaque ligne quand
on garde les sauts de ligne, mais pas dans le cas contraire.
$ tr -d aeiou
Ceci est
Cc st
un essai
n ss
$ tr -c -d aeiou
Ceci est
un essai
eieueai$
Les commandes Unix, même les plus simples, sont toujours
vraiment étonnantes.
Oui. ;-)
A moins que ce ne soit la sauce GNU
qui leur donne cette saveur étrange :)
J'ai essayé dans Cygwin. C'est encore plus rigolo quand on saisit plusieurs lignes, puisqu'alors il y a un « flush » à chaque ligne quand on garde les sauts de ligne, mais pas dans le cas contraire.
$ tr -d aeiou Ceci est Cc st un essai n ss $ tr -c -d aeiou Ceci est un essai eieueai$
Les commandes Unix, même les plus simples, sont toujours vraiment étonnantes.
Oui. ;-)
A moins que ce ne soit la sauce GNU qui leur donne cette saveur étrange :)
J'essaierai demain sur AIX, pour voir.
Olivier Miakinen
Le 11/06/2007 23:50, j'écrivais :
J'ai essayé dans Cygwin. C'est encore plus rigolo quand on saisit plusieurs lignes, puisqu'alors il y a un « flush » à chaque ligne quand on garde les sauts de ligne, mais pas dans le cas contraire.
$ tr -d aeiou Ceci est Cc st un essai n ss $ tr -c -d aeiou Ceci est un essai eieueai$
A moins que ce ne soit la sauce GNU qui leur donne cette saveur étrange :)
J'essaierai demain sur AIX, pour voir.
J'ai essayé sur Linux, AIX et Solaris. Pour Linux c'est comme Cygwin ; mais pour AIX et Solaris il y a un affichage à chaque ligne, donc : $ tr -c -d aeiou Ceci est eieun essai ueai$
Le 11/06/2007 23:50, j'écrivais :
J'ai essayé dans Cygwin. C'est encore plus rigolo quand on saisit
plusieurs lignes, puisqu'alors il y a un « flush » à chaque ligne quand
on garde les sauts de ligne, mais pas dans le cas contraire.
$ tr -d aeiou
Ceci est
Cc st
un essai
n ss
$ tr -c -d aeiou
Ceci est
un essai
eieueai$
A moins que ce ne soit la sauce GNU
qui leur donne cette saveur étrange :)
J'essaierai demain sur AIX, pour voir.
J'ai essayé sur Linux, AIX et Solaris. Pour Linux c'est comme Cygwin ;
mais pour AIX et Solaris il y a un affichage à chaque ligne, donc :
$ tr -c -d aeiou
Ceci est
eieun essai
ueai$
J'ai essayé dans Cygwin. C'est encore plus rigolo quand on saisit plusieurs lignes, puisqu'alors il y a un « flush » à chaque ligne quand on garde les sauts de ligne, mais pas dans le cas contraire.
$ tr -d aeiou Ceci est Cc st un essai n ss $ tr -c -d aeiou Ceci est un essai eieueai$
A moins que ce ne soit la sauce GNU qui leur donne cette saveur étrange :)
J'essaierai demain sur AIX, pour voir.
J'ai essayé sur Linux, AIX et Solaris. Pour Linux c'est comme Cygwin ; mais pour AIX et Solaris il y a un affichage à chaque ligne, donc : $ tr -c -d aeiou Ceci est eieun essai ueai$
thulhu
L'option -c c'est le complement de la liste (ou la négation si vous préférez). En d'autre terme ça se traduit par tous les caractères SAUF ceux qui sont dans la liste. Et tous les caracteres c'est TOUT le code ASCII y compris les caractères speciaux (retour à la ligne et compagnie).
exemple :
# tr -c ' n' '[X*]' salut les bleus XXXXX XXX XXXXX ^D #
première liste : espace et retour à la ligne Donc tr -c ' n' '[X*]' c'est remplacer tous les caractères SAUF les espaces et les retours à la ligne par un X.
(en tous cas sur AIX (ksh86), HP/UX (ksh86),Solaris (ksh86 et zsh3.0), linux (bash2.05b))
F.
L'option -c c'est le complement de la liste (ou la négation si vous
préférez).
En d'autre terme ça se traduit par tous les caractères SAUF ceux qui
sont dans la liste.
Et tous les caracteres c'est TOUT le code ASCII y compris les
caractères speciaux (retour à la ligne et compagnie).
exemple :
# tr -c ' n' '[X*]'
salut les bleus
XXXXX XXX XXXXX
^D
#
première liste : espace et retour à la ligne
Donc tr -c ' n' '[X*]' c'est remplacer tous les caractères SAUF les
espaces et les retours à la ligne par un X.
(en tous cas sur AIX (ksh86), HP/UX (ksh86),Solaris (ksh86 et zsh3.0),
linux (bash2.05b))
L'option -c c'est le complement de la liste (ou la négation si vous préférez). En d'autre terme ça se traduit par tous les caractères SAUF ceux qui sont dans la liste. Et tous les caracteres c'est TOUT le code ASCII y compris les caractères speciaux (retour à la ligne et compagnie).
exemple :
# tr -c ' n' '[X*]' salut les bleus XXXXX XXX XXXXX ^D #
première liste : espace et retour à la ligne Donc tr -c ' n' '[X*]' c'est remplacer tous les caractères SAUF les espaces et les retours à la ligne par un X.
(en tous cas sur AIX (ksh86), HP/UX (ksh86),Solaris (ksh86 et zsh3.0), linux (bash2.05b))
F.
Olivier Miakinen
L'option -c c'est le complement de la liste (ou la négation si vous préférez). En d'autre terme ça se traduit par tous les caractères SAUF ceux qui sont dans la liste. Et tous les caracteres c'est TOUT le code ASCII y compris les caractères speciaux (retour à la ligne et compagnie).
Merci de confirmer l'explication de Thierry.
Attention cependant, les caractères pris en compte vont plus loin que le code ASCII (essai en iso-8859-1) :
$ tr 'a-z' X Ça va bien, déjà, Élodie ? ÇX XX XXXX, XéXà, ÉXXXXX ? $ tr -c 'a-z n' X Ça va bien, déjà, Élodie ? Xa va bienX dXjXX Xlodie X $
exemple :
# tr -c ' n' '[X*]' salut les bleus XXXXX XXX XXXXX ^D #
Comme je l'ai fait ci-dessus, tant que l'on n'utilise pas l'option -t (truncate SET2), on peut bien écrire « X » à la place de « '[X*]' » puisque le X sera répété autant de fois qu'il y a de caractères dans SET1.
L'option -c c'est le complement de la liste (ou la négation si vous
préférez).
En d'autre terme ça se traduit par tous les caractères SAUF ceux qui
sont dans la liste.
Et tous les caracteres c'est TOUT le code ASCII y compris les
caractères speciaux (retour à la ligne et compagnie).
Merci de confirmer l'explication de Thierry.
Attention cependant, les caractères pris en compte vont plus loin que le
code ASCII (essai en iso-8859-1) :
$ tr 'a-z' X
Ça va bien, déjà, Élodie ?
ÇX XX XXXX, XéXà, ÉXXXXX ?
$ tr -c 'a-z n' X
Ça va bien, déjà, Élodie ?
Xa va bienX dXjXX Xlodie X
$
exemple :
# tr -c ' n' '[X*]'
salut les bleus
XXXXX XXX XXXXX
^D
#
Comme je l'ai fait ci-dessus, tant que l'on n'utilise pas l'option -t
(truncate SET2), on peut bien écrire « X » à la place de « '[X*]' »
puisque le X sera répété autant de fois qu'il y a de caractères dans SET1.
L'option -c c'est le complement de la liste (ou la négation si vous préférez). En d'autre terme ça se traduit par tous les caractères SAUF ceux qui sont dans la liste. Et tous les caracteres c'est TOUT le code ASCII y compris les caractères speciaux (retour à la ligne et compagnie).
Merci de confirmer l'explication de Thierry.
Attention cependant, les caractères pris en compte vont plus loin que le code ASCII (essai en iso-8859-1) :
$ tr 'a-z' X Ça va bien, déjà, Élodie ? ÇX XX XXXX, XéXà, ÉXXXXX ? $ tr -c 'a-z n' X Ça va bien, déjà, Élodie ? Xa va bienX dXjXX Xlodie X $
exemple :
# tr -c ' n' '[X*]' salut les bleus XXXXX XXX XXXXX ^D #
Comme je l'ai fait ci-dessus, tant que l'on n'utilise pas l'option -t (truncate SET2), on peut bien écrire « X » à la place de « '[X*]' » puisque le X sera répété autant de fois qu'il y a de caractères dans SET1.