#1 Le 13/02/2021, à 11:43
- bergeronnette
[résolu] Remplacer caractère unicode en ligne de commande
Bonjour,
Sur le modèle de ces exemples https://www.webpreprod.com/issue/cherch … ous-linux/, je cherche à remplacer le caractère unicode U+2019 par U+0027 dans plusieurs fichiers tex.
J'ai essayé plusieurs méthodes :
find . -type f -exec sed -i -e ’s/'\8217'/'\39'/g’ {} \;
find . -type f -exec sed -i -e ’s/u"\u2019"/u"\u0027"/g’ {} \;
find . -type f -exec sed -i -e ’s/`u+2019`/`u+0027`/g’ {} \;
find . -type f -exec sed -i -e ’s/`\u2019`/`\u0027`/g’ {} \;
find . -type f -exec sed -i -e ’s/^u2019/^u0027/g’ {} \;
find . -type f -exec sed -i -e ’s/"\u2019"/"\u0027"/g’ {} \;
et plusieurs dérivées mais je ne trouve pas la bonne formule sur le net.
Merci
Dernière modification par bergeronnette (Le 13/02/2021, à 13:54)
Hors ligne
#2 Le 13/02/2021, à 11:52
- bergeronnette
Re : [résolu] Remplacer caractère unicode en ligne de commande
Je crois que j'ai trouvé grâce à ce site https://www.gaijin.at/en/infos/unicode- … able-latin
find . -type f -exec sed -i -e 's/"’"/"'"/g' {} \;
Peut-on me confirmer que c'est la bonne formule ?
Merci
Hors ligne
#3 Le 13/02/2021, à 12:06
- pingouinux
Re : [résolu] Remplacer caractère unicode en ligne de commande
Bonjour,
Pourquoi pas tout simplement ceci ?
find -type f -exec sed -i "s/’/'/g" {} \;
Hors ligne
#4 Le 13/02/2021, à 12:24
- MicP
Re : [résolu] Remplacer caractère unicode en ligne de commande
Bonjour,
Pour rechercher les noms des caractères
de toutes les pages unicode et leur correspondances
(en hexa, décimal, octal, entité HTML, perl string, …)
j'utilise cette page web : UTF-8 encoding table and Unicode characters
U+01FC Ǽ c7 bc LATIN CAPITAL LETTER AE WITH ACUTE
U+01FD ǽ c7 bd LATIN SMALL LETTER AE WITH ACUTE
michel@debT450:~$ echo "ǼǼǼ" | sed 's/\xc7\xbc/\xc7\xbd/g'
ǽǽǽ
michel@debT450:~$
Dernière modification par MicP (Le 13/02/2021, à 12:26)
Hors ligne
#5 Le 13/02/2021, à 12:59
- pingouinux
Re : [résolu] Remplacer caractère unicode en ligne de commande
Ou alors :
find -type f -exec sed -i 's/'$'\u2019''/'$'\u0027''/g' {} \;
Ajouté :
Un peu plus simple
find -type f -exec sed -i s/$'\u2019'/$'\u0027'/g {} \;
Dernière modification par pingouinux (Le 13/02/2021, à 13:09)
Hors ligne
#6 Le 13/02/2021, à 13:54
- bergeronnette
Re : [résolu] Remplacer caractère unicode en ligne de commande
Bonjour,
La seconde méthode de pingouinux fonctionne.
La mienne non.
J'ai vérifié avec le logiciel meld les 2 dossiers (original et copie) et seule celle de pingounix donne un changement.
Avec la méthode directe, j'avais une erreur caractère non reconnu.
Merci
Dernière modification par bergeronnette (Le 13/02/2021, à 14:35)
Hors ligne
#7 Le 13/02/2021, à 14:10
- MicP
Re : [résolu] Remplacer caractère unicode en ligne de commande
Non, ma méthode fonctionne,
c'est simplement parce que tu as oublié de mettre des apostrophes,
comme je les avais mises dans la ligne de commande que j'ai proposée.
Fait comme ça :
En hexadécimal :
find -type f -exec sed -i 's/\xe2\x80\x99/\x27/g' {} \;
En décimal :
find -type f -exec sed -i 's/\d226\d128\d153/\d39/g' {} \;
En échappant directement les caractères :
find -type f -exec sed -i "s/\’/\'/g" {} \;
Un mix des deux dernières :
find -type f -exec sed -i 's/\’/\d39/g' {} \;
Dernière modification par MicP (Le 13/02/2021, à 14:30)
Hors ligne
#8 Le 13/02/2021, à 14:34
- bergeronnette
Re : [résolu] Remplacer caractère unicode en ligne de commande
c'est simplement parce que tu as oublié de mettre des apostrophes,
Boulette…
En échappant directement les caractères :
J'avais testé mais pas remplacé les ' qui encadrent par des ".
Merci
Dernière modification par bergeronnette (Le 13/02/2021, à 14:38)
Hors ligne
#9 Le 13/02/2021, à 14:42
- MicP
Re : [résolu] Remplacer caractère unicode en ligne de commande
…J'avais testé mais pas remplacé les ' par der ".
Oui,
le piège, c'est que si on entoure d'apostrophe et que l'on met une apostrohe dedans,
sed ne sait plus où ça finit :
find -type f -exec sed -i 's/\’/\'/g' {} \; => pas glop!
find -type f -exec sed -i "s/\’/\'/g" {} \; => OK!
Dernière modification par MicP (Le 14/02/2021, à 17:46)
Hors ligne
#10 Le 14/02/2021, à 21:57
- pingouinux
Re : [résolu] Remplacer caractère unicode en ligne de commande
@MicP #9 :
Tu peux même simplifier ta seconde commande :
find -type f -exec sed -i "s/’/'/g" {} \;
Hors ligne
#11 Le 15/02/2021, à 01:53
- MicP
Re : [résolu] Remplacer caractère unicode en ligne de commande
Ha bin oui, j'avais même pas fais attention.
Hors ligne