J'ai (encore) une question bête, et une de fois de plus sur sed :-)
Je prends un exemple pour être sûr d'être compris, mais je ne veux pas de
solution alternative car ça peut s'appliquer ailleurs, et surtout, ça
n'aidera pas ma compréhension ;-)
Soit un mail, stocké dans un fichier.
Dans les entêtes de ce mail, je peux avoir une ligne du genre
Message-Id: <xxx_peu_importexxx@Valérie>
Or, je ne veux pas de caractère accentué dans le Message-Id.
Je fais donc un filtre pour ça, par exemple :
sed 's/^\(Message-Id: .*\)[éèêë]\(.*\)/\1e\2/g'
Seulement, je trouve l'expression bien lourde pour l'usage, et je me dis
qu'il doit y avoir mieux.
De plus, comment traiter toutes les voyelles concernées ?
Une expression par lettre de remplacement ?
Tant que j'y pense, une question que je me suis déjà posée :
Est-il possible de matcher plus de 9 valeurs différentes en une seule
expression ? Si oui, qu'utiliser après le \9 ?
Merci de vos éclairages.
PS : J'insiste bien, c'est surtout pour ma compréhension, en particulier
des regexp.
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
Jean-Yves LENHOF
On Wed, 01 Oct 2003 11:00:30 -0400, Christophe PEREZ wrote:
Bonjour,
J'ai (encore) une question bête, et une de fois de plus sur sed :-)
Je prends un exemple pour être sûr d'être compris, mais je ne veux pas de solution alternative car ça peut s'appliquer ailleurs, et surtout, ça n'aidera pas ma compréhension ;-)
Soit un mail, stocké dans un fichier. Dans les entêtes de ce mail, je peux avoir une ligne du genre Message-Id: érie>
Or, je ne veux pas de caractère accentué dans le Message-Id. Je fais donc un filtre pour ça, par exemple : sed 's/^(Message-Id: .*)[éèêë](.*)/1e2/g'
<snip>
cf le man de tr :
... [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. ...
Cordialement,
JYL
On Wed, 01 Oct 2003 11:00:30 -0400, Christophe PEREZ wrote:
Bonjour,
J'ai (encore) une question bête, et une de fois de plus sur sed :-)
Je prends un exemple pour être sûr d'être compris, mais je ne veux
pas de solution alternative car ça peut s'appliquer ailleurs, et
surtout, ça n'aidera pas ma compréhension ;-)
Soit un mail, stocké dans un fichier. Dans les entêtes de ce mail, je
peux avoir une ligne du genre Message-Id: <xxx_peu_importexxx@Valérie>
Or, je ne veux pas de caractère accentué dans le Message-Id. Je fais
donc un filtre pour ça, par exemple : sed 's/^(Message-Id:
.*)[éèêë](.*)/1e2/g'
<snip>
cf le man de tr :
...
[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.
...
On Wed, 01 Oct 2003 11:00:30 -0400, Christophe PEREZ wrote:
Bonjour,
J'ai (encore) une question bête, et une de fois de plus sur sed :-)
Je prends un exemple pour être sûr d'être compris, mais je ne veux pas de solution alternative car ça peut s'appliquer ailleurs, et surtout, ça n'aidera pas ma compréhension ;-)
Soit un mail, stocké dans un fichier. Dans les entêtes de ce mail, je peux avoir une ligne du genre Message-Id: érie>
Or, je ne veux pas de caractère accentué dans le Message-Id. Je fais donc un filtre pour ça, par exemple : sed 's/^(Message-Id: .*)[éèêë](.*)/1e2/g'
<snip>
cf le man de tr :
... [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. ...
Cordialement,
JYL
TiChou
Dans l'article news:, Christophe PEREZ écrivait :
Bonjour,
Bonjour,
Soit un mail, stocké dans un fichier. Dans les entêtes de ce mail, je peux avoir une ligne du genre Message-Id: érie>
Or, je ne veux pas de caractère accentué dans le Message-Id. Je fais donc un filtre pour ça, par exemple : sed 's/^(Message-Id: .*)[éèêë](.*)/1e2/g'
Seulement, je trouve l'expression bien lourde pour l'usage, et je me dis qu'il doit y avoir mieux.
Oui,
sed -e '/^Message-Id:[[:blank:]]/s/[éèêë]/e/g
De plus, comment traiter toutes les voyelles concernées ? Une expression par lettre de remplacement ?
sed -e '/^Message-Id:[[:blank:]]/{ s/[àâä]/a/g s/[éèêë]/e/g s/[îï]/i/g s/[ôö]/o/g s/[ùûü]/u/g }'
ou
sed -e '/^Message-Id:[[:blank:]]/y/àâäéèêëîïôöùûü/aaaeeeeiioouuu/'
[[:blank:]] extension GNU/POSIX, équivaut à [ t]
Tant que j'y pense, une question que je me suis déjà posée : Est-il possible de matcher plus de 9 valeurs différentes en une seule expression ?
Non.
-- TiChou
Dans l'article news:<pan.2003.10.01.15.00.30.561629@novazur.fr>,
Christophe PEREZ <christophe@novazur.com> écrivait :
Bonjour,
Bonjour,
Soit un mail, stocké dans un fichier.
Dans les entêtes de ce mail, je peux avoir une ligne du genre
Message-Id: <xxx_peu_importexxx@Valérie>
Or, je ne veux pas de caractère accentué dans le Message-Id.
Je fais donc un filtre pour ça, par exemple :
sed 's/^(Message-Id: .*)[éèêë](.*)/1e2/g'
Seulement, je trouve l'expression bien lourde pour l'usage, et je me
dis qu'il doit y avoir mieux.
Oui,
sed -e '/^Message-Id:[[:blank:]]/s/[éèêë]/e/g
De plus, comment traiter toutes les voyelles concernées ?
Une expression par lettre de remplacement ?
sed -e '/^Message-Id:[[:blank:]]/{
s/[àâä]/a/g
s/[éèêë]/e/g
s/[îï]/i/g
s/[ôö]/o/g
s/[ùûü]/u/g
}'
ou
sed -e '/^Message-Id:[[:blank:]]/y/àâäéèêëîïôöùûü/aaaeeeeiioouuu/'
[[:blank:]] extension GNU/POSIX, équivaut à [ t]
Tant que j'y pense, une question que je me suis déjà posée :
Est-il possible de matcher plus de 9 valeurs différentes en une seule
expression ?
Soit un mail, stocké dans un fichier. Dans les entêtes de ce mail, je peux avoir une ligne du genre Message-Id: érie>
Or, je ne veux pas de caractère accentué dans le Message-Id. Je fais donc un filtre pour ça, par exemple : sed 's/^(Message-Id: .*)[éèêë](.*)/1e2/g'
Attention, ce script ne fait ce que tu veux, il ne transforme qu'un seul accent.
si tu as : Message-Id: émé> tu obtiendras en sortie: Message-Id: éme>
Voir Mr TiChou pour les solutions kivontbien, 'y' sert précisement à ce genre d'usage.
-- Marc.
Laurent Wacrenier
Christophe PEREZ écrit:
Or, je ne veux pas de caractère accentué dans le Message-Id. Je fais donc un filtre pour ça, par exemple : sed 's/^(Message-Id: .*)[éèêë](.*)/1e2/g'
Seulement, je trouve l'expression bien lourde pour l'usage, et je me dis qu'il doit y avoir mieux.
Tout à fait :
sed '/^Message-Id:/s/[éèêë]/e/g'
De plus, comment traiter toutes les voyelles concernées ?
/^Message-Id:/{s/[éèêë]/e/g;s/ÿ/y/g; ... ;}
Une expression par lettre de remplacement ?
Ben oui.
Tant que j'y pense, une question que je me suis déjà posée : Est-il possible de matcher plus de 9 valeurs différentes en une seule expression ? Si oui, qu'utiliser après le 9 ?
Pas d'après le manuel, donc non.
Christophe PEREZ <christophe@novazur.com> écrit:
Or, je ne veux pas de caractère accentué dans le Message-Id.
Je fais donc un filtre pour ça, par exemple :
sed 's/^(Message-Id: .*)[éèêë](.*)/1e2/g'
Seulement, je trouve l'expression bien lourde pour l'usage, et je me dis
qu'il doit y avoir mieux.
Tout à fait :
sed '/^Message-Id:/s/[éèêë]/e/g'
De plus, comment traiter toutes les voyelles concernées ?
/^Message-Id:/{s/[éèêë]/e/g;s/ÿ/y/g; ... ;}
Une expression par lettre de remplacement ?
Ben oui.
Tant que j'y pense, une question que je me suis déjà posée :
Est-il possible de matcher plus de 9 valeurs différentes en une seule
expression ? Si oui, qu'utiliser après le 9 ?
Or, je ne veux pas de caractère accentué dans le Message-Id. Je fais donc un filtre pour ça, par exemple : sed 's/^(Message-Id: .*)[éèêë](.*)/1e2/g'
Seulement, je trouve l'expression bien lourde pour l'usage, et je me dis qu'il doit y avoir mieux.
Tout à fait :
sed '/^Message-Id:/s/[éèêë]/e/g'
De plus, comment traiter toutes les voyelles concernées ?
/^Message-Id:/{s/[éèêë]/e/g;s/ÿ/y/g; ... ;}
Une expression par lettre de remplacement ?
Ben oui.
Tant que j'y pense, une question que je me suis déjà posée : Est-il possible de matcher plus de 9 valeurs différentes en une seule expression ? Si oui, qu'utiliser après le 9 ?
Pas d'après le manuel, donc non.
Christophe PEREZ
Le Thu, 02 Oct 2003 05:47:33 +0200, TiChou a écrit :
sed -e '/^Message-Id:[[:blank:]]/s/[éèêë]/e/g
Ok. Je crois que je viens d'apprendre une utilisation pourtant évidente de sed.
sed -e '/^Message-Id:[[:blank:]]/{ s/[àâä]/a/g s/[éèêë]/e/g s/[îï]/i/g s/[ôö]/o/g s/[ùûü]/u/g }'
ou
sed -e '/^Message-Id:[[:blank:]]/y/àâäéèêëîïôöùûü/aaaeeeeiioouuu/'
[[:blank:]] extension GNU/POSIX, équivaut à [ t]
Merci pour la précision qui, tu l'auras compris, m'est fort utile :-)
Est-il possible de matcher plus de 9 valeurs différentes en une seule expression ?
Non.
Bien.
Merci bien pour ces infos, et merci beaucoup aussi aux autres contributeurs que j'ai lus avec attention et dont j'ai bien pris en compte tous les commentaires.
-- Christophe PEREZ
Le Thu, 02 Oct 2003 05:47:33 +0200, TiChou a écrit :
sed -e '/^Message-Id:[[:blank:]]/s/[éèêë]/e/g
Ok.
Je crois que je viens d'apprendre une utilisation pourtant évidente de
sed.
sed -e '/^Message-Id:[[:blank:]]/{
s/[àâä]/a/g
s/[éèêë]/e/g
s/[îï]/i/g
s/[ôö]/o/g
s/[ùûü]/u/g
}'
ou
sed -e '/^Message-Id:[[:blank:]]/y/àâäéèêëîïôöùûü/aaaeeeeiioouuu/'
[[:blank:]] extension GNU/POSIX, équivaut à [ t]
Merci pour la précision qui, tu l'auras compris, m'est fort utile :-)
Est-il possible de matcher plus de 9 valeurs différentes en une seule
expression ?
Non.
Bien.
Merci bien pour ces infos, et merci beaucoup aussi aux autres
contributeurs que j'ai lus avec attention et dont j'ai bien pris en compte
tous les commentaires.
Le Thu, 02 Oct 2003 05:47:33 +0200, TiChou a écrit :
sed -e '/^Message-Id:[[:blank:]]/s/[éèêë]/e/g
Ok. Je crois que je viens d'apprendre une utilisation pourtant évidente de sed.
sed -e '/^Message-Id:[[:blank:]]/{ s/[àâä]/a/g s/[éèêë]/e/g s/[îï]/i/g s/[ôö]/o/g s/[ùûü]/u/g }'
ou
sed -e '/^Message-Id:[[:blank:]]/y/àâäéèêëîïôöùûü/aaaeeeeiioouuu/'
[[:blank:]] extension GNU/POSIX, équivaut à [ t]
Merci pour la précision qui, tu l'auras compris, m'est fort utile :-)
Est-il possible de matcher plus de 9 valeurs différentes en une seule expression ?
Non.
Bien.
Merci bien pour ces infos, et merci beaucoup aussi aux autres contributeurs que j'ai lus avec attention et dont j'ai bien pris en compte tous les commentaires.
-- Christophe PEREZ
Jean-Yves LENHOF
On Wed, 01 Oct 2003 11:00:30 -0400, Christophe PEREZ wrote:
Bonjour,
J'ai (encore) une question bête, et une de fois de plus sur sed :-)
Je prends un exemple pour être sûr d'être compris, mais je ne veux pas de solution alternative car ça peut s'appliquer ailleurs, et surtout, ça n'aidera pas ma compréhension ;-)
Soit un mail, stocké dans un fichier. Dans les entêtes de ce mail, je peux avoir une ligne du genre Message-Id: érie>
Or, je ne veux pas de caractère accentué dans le Message-Id. Je fais donc un filtre pour ça, par exemple : sed 's/^(Message-Id: .*)[éèêë](.*)/1e2/g'
<snip>
cf le man de tr :
... [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.
Cordialement,
JYL
On Wed, 01 Oct 2003 11:00:30 -0400, Christophe PEREZ wrote:
Bonjour,
J'ai (encore) une question bête, et une de fois de plus sur sed :-)
Je prends un exemple pour être sûr d'être compris, mais je ne veux pas de
solution alternative car ça peut s'appliquer ailleurs, et surtout, ça
n'aidera pas ma compréhension ;-)
Soit un mail, stocké dans un fichier.
Dans les entêtes de ce mail, je peux avoir une ligne du genre
Message-Id: <xxx_peu_importexxx@Valérie>
Or, je ne veux pas de caractère accentué dans le Message-Id.
Je fais donc un filtre pour ça, par exemple :
sed 's/^(Message-Id: .*)[éèêë](.*)/1e2/g'
<snip>
cf le man de tr :
...
[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.
On Wed, 01 Oct 2003 11:00:30 -0400, Christophe PEREZ wrote:
Bonjour,
J'ai (encore) une question bête, et une de fois de plus sur sed :-)
Je prends un exemple pour être sûr d'être compris, mais je ne veux pas de solution alternative car ça peut s'appliquer ailleurs, et surtout, ça n'aidera pas ma compréhension ;-)
Soit un mail, stocké dans un fichier. Dans les entêtes de ce mail, je peux avoir une ligne du genre Message-Id: érie>
Or, je ne veux pas de caractère accentué dans le Message-Id. Je fais donc un filtre pour ça, par exemple : sed 's/^(Message-Id: .*)[éèêë](.*)/1e2/g'
<snip>
cf le man de tr :
... [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.