comment faire avec sed pour obtenir ce genre de substitution :
chaine origine chaine retournée
ee'sr ee''s'r
sed "s/'./\'\&'/g" (pour n'importe quel caractere apres ')
sed "s/'[a-z]/\'\&'/g"
(pour seulement a-z).
que c'est beau !!!
merci beaucoup Stéphane.
julien.gautier
Stephane Chazelas wrote:
sed "s/'./\'\&'/g" (pour n'importe quel caractere apres ')
sed "s/'[a-z]/\'\&'/g"
(pour seulement a-z).
puis-je ajouter une seconde question ?
J'ai aussi des problèmes avec les accents (évidemment) ...
De plus je jongle entre AppleScript et le shell (puisque les commandes shell ne sont lancées que par AppleScript : do shell script "commande"), ce qui ne simplifie rien.
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon path vers le fichier; mais si le nom de ce fichier comporte des accents, il faut les traduire aisni :
é ---> e314201
etc.
Or je n'arrive pas à écrire une commande sed qui transforme le "é" en "e/314/201" et qui puisse se lancer depuis un fichier script, du genre :
---------- fichier_script ---------
#!/bin/bash
------ fin du fichier_script
Puis on lance :
echo $1 | sed -e la_commande_qui_va_bien
var=`cat fichier_texte` -- retourne la chaine "imbécile"
sh fichier_script var -- devrait retourner "imbe314201cile"
As-tu le courage (et le temps) de m'aider encore ?
sed "s/'./\\'\\&'/g"
(pour n'importe quel caractere apres ')
sed "s/'[a-z]/\\'\\&'/g"
(pour seulement a-z).
puis-je ajouter une seconde question ?
J'ai aussi des problèmes avec les accents (évidemment) ...
De plus je jongle entre AppleScript et le shell (puisque les commandes
shell ne sont lancées que par AppleScript : do shell script "commande"),
ce qui ne simplifie rien.
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon
path vers le fichier; mais si le nom de ce fichier comporte des accents,
il faut les traduire aisni :
é ---> e314201
etc.
Or je n'arrive pas à écrire une commande sed qui transforme le "é" en
"e/314/201" et qui puisse se lancer depuis un fichier script, du genre :
---------- fichier_script ---------
#!/bin/bash
------ fin du fichier_script
Puis on lance :
echo $1 | sed -e la_commande_qui_va_bien
var=`cat fichier_texte` -- retourne la chaine "imbécile"
sh fichier_script var -- devrait retourner "imbe314201cile"
As-tu le courage (et le temps) de m'aider encore ?
sed "s/'./\'\&'/g" (pour n'importe quel caractere apres ')
sed "s/'[a-z]/\'\&'/g"
(pour seulement a-z).
puis-je ajouter une seconde question ?
J'ai aussi des problèmes avec les accents (évidemment) ...
De plus je jongle entre AppleScript et le shell (puisque les commandes shell ne sont lancées que par AppleScript : do shell script "commande"), ce qui ne simplifie rien.
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon path vers le fichier; mais si le nom de ce fichier comporte des accents, il faut les traduire aisni :
é ---> e314201
etc.
Or je n'arrive pas à écrire une commande sed qui transforme le "é" en "e/314/201" et qui puisse se lancer depuis un fichier script, du genre :
---------- fichier_script ---------
#!/bin/bash
------ fin du fichier_script
Puis on lance :
echo $1 | sed -e la_commande_qui_va_bien
var=`cat fichier_texte` -- retourne la chaine "imbécile"
sh fichier_script var -- devrait retourner "imbe314201cile"
As-tu le courage (et le temps) de m'aider encore ?
Stephane Chazelas
2004-07-9, 17:31(+02), Julien Gautier: [...]
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon path vers le fichier; mais si le nom de ce fichier comporte des accents, il faut les traduire aisni :
é ---> e314201 [...]
Autrement dit UTF-8 dans la forme canonique decomposee. Tu peux utiliser perl 5.8, laisse tomber sed et le shell.
$ PERLIO=:utf8 perl -MUnicode::Normalize -MEncode -le ' print NFD(decode("latin1","é"))' | od -tc 0000000 e 314 201 n 0000004
-- Stephane
2004-07-9, 17:31(+02), Julien Gautier:
[...]
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon
path vers le fichier; mais si le nom de ce fichier comporte des accents,
il faut les traduire aisni :
é ---> e314201
[...]
Autrement dit UTF-8 dans la forme canonique decomposee. Tu peux
utiliser perl 5.8, laisse tomber sed et le shell.
$ PERLIO=:utf8 perl -MUnicode::Normalize -MEncode -le '
print NFD(decode("latin1","é"))' | od -tc
0000000 e 314 201 n
0000004
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon path vers le fichier; mais si le nom de ce fichier comporte des accents, il faut les traduire aisni :
é ---> e314201 [...]
Autrement dit UTF-8 dans la forme canonique decomposee. Tu peux utiliser perl 5.8, laisse tomber sed et le shell.
$ PERLIO=:utf8 perl -MUnicode::Normalize -MEncode -le ' print NFD(decode("latin1","é"))' | od -tc 0000000 e 314 201 n 0000004
-- Stephane
julien.gautier
Stephane Chazelas wrote:
2004-07-9, 17:31(+02), Julien Gautier: [...]
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon path vers le fichier; mais si le nom de ce fichier comporte des accents, il faut les traduire aisni :
é ---> e314201 [...]
Autrement dit UTF-8 dans la forme canonique decomposee. Tu peux utiliser perl 5.8, laisse tomber sed et le shell.
$ PERLIO=:utf8 perl -MUnicode::Normalize -MEncode -le ' print NFD(decode("latin1","é"))' | od -tc 0000000 e 314 201 n 0000004
excuse moi mais je suis complétement perdu.... je ne connais rien du tout à Perl (par contre php, un peu oui).
comment dois-je utiliser ce bout de code ? dans un fichier ?
et si je veux ensuite décliner pour traiter tous les accents possibles ?
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon
path vers le fichier; mais si le nom de ce fichier comporte des accents,
il faut les traduire aisni :
é ---> e314201
[...]
Autrement dit UTF-8 dans la forme canonique decomposee. Tu peux
utiliser perl 5.8, laisse tomber sed et le shell.
$ PERLIO=:utf8 perl -MUnicode::Normalize -MEncode -le '
print NFD(decode("latin1","é"))' | od -tc
0000000 e 314 201 n
0000004
excuse moi mais je suis complétement perdu.... je ne connais rien du
tout à Perl (par contre php, un peu oui).
comment dois-je utiliser ce bout de code ? dans un fichier ?
et si je veux ensuite décliner pour traiter tous les accents
possibles ?
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon path vers le fichier; mais si le nom de ce fichier comporte des accents, il faut les traduire aisni :
é ---> e314201 [...]
Autrement dit UTF-8 dans la forme canonique decomposee. Tu peux utiliser perl 5.8, laisse tomber sed et le shell.
$ PERLIO=:utf8 perl -MUnicode::Normalize -MEncode -le ' print NFD(decode("latin1","é"))' | od -tc 0000000 e 314 201 n 0000004
excuse moi mais je suis complétement perdu.... je ne connais rien du tout à Perl (par contre php, un peu oui).
comment dois-je utiliser ce bout de code ? dans un fichier ?
et si je veux ensuite décliner pour traiter tous les accents possibles ?
merci encore.
Sylvain
Julien Gautier a écrit le Friday 09 July 2004 17:31 :
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon path vers le fichier; mais si le nom de ce fichier comporte des accents, il faut les traduire aisni :
é ---> e314201
etc.
Bonjour,
Je pense plutôt que ton problème vient du fait que tes locales ne conviennent pas avec ceux de ton filesystem. Plutôt que chercher des bidouilles pour faire ceci, tu devrais mettre tes locale en "ce que tu veux UTF-8", et tu pourras faire tes accents sans avoir a faire des choses comme e314201, après la méthode pour procéder dépends de l'os que tu utilise.
-- Combien de jeunes talents confinés dans une mansarde s'étiolent et périssent faute d'un ami. BALZAC, Peau chagr., 1831, p. 12
Julien Gautier a écrit le Friday 09 July 2004 17:31 :
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon
path vers le fichier; mais si le nom de ce fichier comporte des accents,
il faut les traduire aisni :
é ---> e314201
etc.
Bonjour,
Je pense plutôt que ton problème vient du fait que tes locales ne
conviennent pas avec ceux de ton filesystem.
Plutôt que chercher des bidouilles pour faire ceci, tu devrais mettre
tes locale en "ce que tu veux UTF-8", et tu pourras faire tes accents sans
avoir a faire des choses comme e314201, après la méthode pour procéder
dépends de l'os que tu utilise.
--
Combien de jeunes talents confinés dans une mansarde s'étiolent et
périssent faute d'un ami.
BALZAC, Peau chagr., 1831, p. 12
Julien Gautier a écrit le Friday 09 July 2004 17:31 :
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon path vers le fichier; mais si le nom de ce fichier comporte des accents, il faut les traduire aisni :
é ---> e314201
etc.
Bonjour,
Je pense plutôt que ton problème vient du fait que tes locales ne conviennent pas avec ceux de ton filesystem. Plutôt que chercher des bidouilles pour faire ceci, tu devrais mettre tes locale en "ce que tu veux UTF-8", et tu pourras faire tes accents sans avoir a faire des choses comme e314201, après la méthode pour procéder dépends de l'os que tu utilise.
-- Combien de jeunes talents confinés dans une mansarde s'étiolent et périssent faute d'un ami. BALZAC, Peau chagr., 1831, p. 12
Julien Gautier a écrit le Friday 09 July 2004 17:31 :
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon path vers le fichier; mais si le nom de ce fichier comporte des accents, il faut les traduire aisni :
é ---> e314201
etc.
Bonjour,
Je pense plutôt que ton problème vient du fait que tes locales ne conviennent pas avec ceux de ton filesystem. Plutôt que chercher des bidouilles pour faire ceci, tu devrais mettre tes locale en "ce que tu veux UTF-8", et tu pourras faire tes accents sans avoir a faire des choses comme e314201, après la méthode pour procéder dépends de l'os que tu utilise.
ok, merci.
Sylvain <thefunny@hosting42.com> wrote:
Julien Gautier a écrit le Friday 09 July 2004 17:31 :
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon
path vers le fichier; mais si le nom de ce fichier comporte des accents,
il faut les traduire aisni :
é ---> e314201
etc.
Bonjour,
Je pense plutôt que ton problème vient du fait que tes locales ne
conviennent pas avec ceux de ton filesystem.
Plutôt que chercher des bidouilles pour faire ceci, tu devrais mettre
tes locale en "ce que tu veux UTF-8", et tu pourras faire tes accents sans
avoir a faire des choses comme e314201, après la méthode pour procéder
dépends de l'os que tu utilise.
Julien Gautier a écrit le Friday 09 July 2004 17:31 :
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon path vers le fichier; mais si le nom de ce fichier comporte des accents, il faut les traduire aisni :
é ---> e314201
etc.
Bonjour,
Je pense plutôt que ton problème vient du fait que tes locales ne conviennent pas avec ceux de ton filesystem. Plutôt que chercher des bidouilles pour faire ceci, tu devrais mettre tes locale en "ce que tu veux UTF-8", et tu pourras faire tes accents sans avoir a faire des choses comme e314201, après la méthode pour procéder dépends de l'os que tu utilise.
ok, merci.
Stephane Chazelas
2004-07-11, 15:11(+02), Sylvain:
Julien Gautier a écrit le Friday 09 July 2004 17:31 :
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon path vers le fichier; mais si le nom de ce fichier comporte des accents, il faut les traduire aisni :
é ---> e314201
etc.
Je pense plutôt que ton problème vient du fait que tes locales ne
conviennent pas avec ceux de ton filesystem.
Ca y ressemble. Cela dit, je ne connais pas de locale sur aucun systeme ou la frappe de la touche "é" insere les deux caracteres Unicode e (U+0065) et "COMBINING_ACUTE_ACCENT" (U+0301). Je ne l'ai toujours vu inseré que dans sa forme en un seul caractère (U+00E9, (303251 en UTF8)).
Cela dit, il y a peut-etre moyen de monter le filesystem pour que les caracteres soient convertis a la volee en iso-8859-(1/15).
2004-07-11, 15:11(+02), Sylvain:
Julien Gautier a écrit le Friday 09 July 2004 17:31 :
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon
path vers le fichier; mais si le nom de ce fichier comporte des accents,
il faut les traduire aisni :
é ---> e314201
etc.
Je pense plutôt que ton problème vient du fait que tes locales ne
conviennent pas avec ceux de ton filesystem.
Ca y ressemble. Cela dit, je ne connais pas de locale sur aucun
systeme ou la frappe de la touche "é" insere les deux caracteres
Unicode e (U+0065) et "COMBINING_ACUTE_ACCENT" (U+0301). Je ne
l'ai toujours vu inseré que dans sa forme en un seul caractère
(U+00E9, (303251 en UTF8)).
Cela dit, il y a peut-etre moyen de monter le filesystem pour
que les caracteres soient convertis a la volee en
iso-8859-(1/15).
Julien Gautier a écrit le Friday 09 July 2004 17:31 :
Mon problème est le suivant : je veux pouvoir lancer un "cp" avec le bon path vers le fichier; mais si le nom de ce fichier comporte des accents, il faut les traduire aisni :
é ---> e314201
etc.
Je pense plutôt que ton problème vient du fait que tes locales ne
conviennent pas avec ceux de ton filesystem.
Ca y ressemble. Cela dit, je ne connais pas de locale sur aucun systeme ou la frappe de la touche "é" insere les deux caracteres Unicode e (U+0065) et "COMBINING_ACUTE_ACCENT" (U+0301). Je ne l'ai toujours vu inseré que dans sa forme en un seul caractère (U+00E9, (303251 en UTF8)).
Cela dit, il y a peut-etre moyen de monter le filesystem pour que les caracteres soient convertis a la volee en iso-8859-(1/15).
julien.gautier
Stephane Chazelas wrote:
chaine origine chaine retournée
ee'sr ee''s'r
sed "s/'./\'\&'/g" (pour n'importe quel caractere apres ')
sed "s/'[a-z]/\'\&'/g"
(pour seulement a-z).
Excuse moi d'y revenir mais je n'arrive pas à ajouter le traitement des accents à la commande (y compris majuscules) :
sed "s/'[a-z]/\'\&'/g"
Sachant que ce sed s'éxécutera dans un shell sh (ou bash : MacOS X)