Bonjour la liste,
Il s'agit d'un export provenant d'un logiciel de comptabilité.
Je l'ai encodé en utf8 et je veux substituer les caractères hexa:
<82> par é
Sous vim les substitutions se font correctement
:%s/\%x82/é/g
Vu la quantité de substitutions à faire je souhaite scripter
l'opération avec sed:
cat ma_source | sed 's/\x82/é/g' > ma_cible
Malheureusement ça se passe mal car le résultat obtenu est
�é
soit:
0000000Â Â C2 C3 A9
D'après ce que je comprends de la faq http://sed.sourceforge.net/grabbag/tutorials/sedfaq.txt
dans sed v1.5 il y aurait une autre syntaxe pour borner la chaîne à substituer
\<...\>
cat ma_source | sed 's/\<x82\>/é/g' > ma_cible
Là aussi ça ne se passe pas comme souhaité.
Le sed de Buster que j'utilise est en v4.7
Y aurait-il une autre syntaxe ou est-ce qu'une solution de
contournement existerai sous bash?
Merci par avance
Le jeudi 12 mai 2022 à 22:11 +0200, Alain Vaugham a écrit :
Bonjour la liste,
Il s'agit d'un export provenant d'un logiciel de comptabilité.
Je l'ai encodé en utf8 et je veux substituer les caractères hexa:
<82> par é
Sous vim les substitutions se font correctement
:%s/\%x82/é/g
Vu la quantité de substitutions à faire je souhaite scripter
l'opération avec sed:
cat ma_source | sed 's/\x82/é/g' > ma_cible
Malheureusement ça se passe mal car le résultat obtenu est
�é
soit:
0000000 C2 C3 A9
D'après ce que je comprends de la faq http://sed.sourceforge.net/grabbag/tutorials/sedfaq.txt
dans sed v1.5 il y aurait une autre syntaxe pour borner la chaîne à substituer
\<...\>
cat ma_source | sed 's/\<x82\>/é/g' > ma_cible
Là aussi ça ne se passe pas comme souhaité.
Le sed de Buster que j'utilise est en v4.7
Y aurait-il une autre syntaxe ou est-ce qu'une solution de
contournement existerai sous bash?
Merci par avance
Bonsoir,
Je connais très peu les scripts bash et encore moins sed donc je dis peut-être n'importe quoi, mais vu qu'il s'agit d'un caractère accentué,-----------------------47f98dbaa78aebc339c8b32595c26af6
je me demande dans quel mesure tu n'as pas une différence
d'environnement linguistique interactif/batch (par exemple examiner
$LANG dans ton script pour vérifier?)
je me demande dans quel mesure tu n'as pas une différence
d'environnement linguistique interactif/batch (par exemple examiner
$LANG dans ton script pour vérifier?)
Je me suis créé un petit fichier test avec 0x82 à la place d'un é
pour tester. (Je me demande d'où sort ce 0x82...)
L'utiliser à la place de sed :
cat ma_source | ./0x82to0xc3a9 > ma_cible
Voilà qui devrait faire le travail aussi bien qu'un éditeur hexa.
De: "Alain Vaugham" <alain@vaugham.com>
À: debian-user-french@lists.debian.org
Envoyé: Vendredi 13 Mai 2022 14:00:03
Objet: [Résolu] Re: vim / sed : subsitution de codes hexa
Le Thu, 12 May 2022 22:38:16 +0000,
Hugues Larrive <hlarrive@pm.me> a écrit :
Il est produit lors de l'export émis par un logiciel de comptabilité. Pareil pour 0x85, 0x8a, 0x88...
[...]
Merci beaucoup pour ce bout de code en c.
J'ai essayé de l'utiliser mais sans succès. Non pas à cause du code,
mais parce que je n'ai pas su installer/paramétrer les outils pour la compilation.
Vu le temps que ça prend pour moi de me mettre à un nouveau langage,
j'ai continué à chercher une alternative en Bash. J'en ai trouvée
une.
Je garde précieusement ce code en référence pour le jour où je serai obligé de me mettre au c.
La solution que j'ai trouvée a été d'utiliser vim dans mon script:
vim -c "%s/\%x82/é/g|wq" mon_fichier
Encore merci pour la tentative de réponse.
Le Thu, 12 May 2022 22:38:16 +0000,
Hugues Larrive hlarrive@pm.me a écrit :
Je me suis créé un petit fichier test avec 0x82 à la place d'un é
pour tester. (Je me demande d'où sort ce 0x82...)
Il est produit lors de l'export émis par un logiciel de comptabilité. Pareil pour 0x85, 0x8a, 0x88...
Merci beaucoup pour ce bout de code en c.
J'ai essayé de l'utiliser mais sans succès. Non pas à cause du code,
mais parce que je n'ai pas su installer/paramétrer les outils pour la compilation.
Vu le temps que ça prend pour moi de me mettre à un nouveau langage,
j'ai continué à chercher une alternative en Bash. J'en ai trouvée une.
Je garde précieusement ce code en référence pour le jour où je serai obligé de me mettre au c.
Il s'agit d'un export provenant d'un logiciel de comptabilité.
Je l'ai encodé en utf8 et je veux substituer les caractères hexa:
<82> par é
Le 12/05/2022 22:11:50, Alain Vaugham a écrit :
Il s'agit d'un export provenant d'un logiciel de comptabilité.
Je l'ai encodé en utf8 et je veux substituer les caractères hexa:
<82> par é
Je me demande si ça ne passerait pas avec konwert, par exemple :
konwert any-utf8 tonfichier.txt>tonfichier-utf8.txt
nicolas patrois : pts noir asocial
--
RÉALISME
M : Qu'est-ce qu'il nous faudrait pour qu'on nous considère comme des humains ? Un cerveau plus gros ?
P : Non... Une carte bleue suffirait...
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 296 |
Nodes: | 16 (2 / 14) |
Uptime: | 48:15:32 |
Calls: | 6,648 |
Files: | 12,198 |
Messages: | 5,329,987 |