This is an OpenPGP/MIME signed message (RFC 4880 and 3156) -----------------------47f98dbaa78aebc339c8b32595c26af6 Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;charset=utf-8
Bonjour,
Je me suis créé un petit fichier test avec 0x82 à la place d'un é
pour tester. (Je me demande d'où sort ce 0x82...)
Chez moi (debian 11 / sed 4.7) ta commande sed donne le même résultat que vi ce qui confirmerait ce qu'a dit Didier.
Une solution sûre pour effectuer cette conversion est de la faire entièrement en hexa avec un petit programme en C, en UTF-8 le caractère 'é' est codé 0xc3a9 ce qui donne le programme 0x82to0xc3a9.c suivant :
#include <stdio.h>
int main()
{
int c;
while ((c = getchar()) != EOF) {
if (c == 0x82) printf("%c%c", 0xc3, 0xa9);
else printf("%c", c);
}
}
Le compiler :
cc 0x82to0xc3a9.c -o 0x82to0xc3a9
L'utiliser à la place de sed :
cat ma_source | ./0x82to0xc3a9 > ma_cible
Voilà qui devrait faire le travail aussi bien qu'un éditeur hexa.
Cordialement,
Hugues
------- Original Message -------
Le jeudi 12 mai 2022 à 23:14, didier gaumet <
[email protected]> a écrit :
ère
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é,
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?)
-----------------------47f98dbaa78aebc339c8b32595c26af6
Content-Type: application/pgp-keys; filename="publickey -
[email protected] - 0xE9429B87.asc"; name="publickey -
[email protected] - 0xE9429B87.asc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="publickey -
[email protected] - 0xE9429B87.asc"; name="publickey -
[email protected] - 0xE9429B87.asc"
LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tDQpWZXJzaW9uOiBPcGVuUEdQLmpz IHY0LjEwLjEwDQpDb21tZW50OiBodHRwczovL29wZW5wZ3Bqcy5vcmcNCg0KeGpNRVlGRTFjUllK S3dZQkJBSGFSdzhCQVFkQVpQdDNnYXpDa3R1c2lxZWtoM3JzbDNBS1dJVGlEdVRhDQpaT21kSEJa MG1vek5IMmhzWVhKeWFYWmxRSEJ0TG0xbElEeG9iR0Z5Y21sMlpVQndiUzV0WlQ3Q2p3UVENCkZn b0FJQVVDWUZFMzRRWUxDUWNJQXdJRUZRZ0tBZ1FXQWdFQUFoa0JBaHNEQWg0QkFDRUpFRnZWSk5j dg0KNHZrMEZpRUU2VUtiaDRyMkNEZUg2WUZCVzlVazF5L2krVFFqQ0FEL2EzcENIQUkrbE9qNTR1 TlVTU1NDDQpMMTg2MVBiMjhhazYrYm9Gc3pudUdzQUJBUFVzOHdCcktBdnFnRFZhcVl1V3p3UGNN c2dlYndTSG44RHcNCmp1SDV6VmdPempnRVlGRTFjUklLS3dZQkJBR1hWUUVGQVFFSFFPbDZ3OXNi R1lmZHZOeVVPb3pjcExiZg0KdGluekljK2g1YnEvazFPdU13VUZBd0VJQjhKNEJCZ1dDQUFKQlFK Z1VUZmhBaHNNQUNFSkVGdlZKTmN2DQo0dmswRmlFRTZVS2JoNHIyQ0RlSDZZRkJXOVVrMXkvaStU VGhQQUQ5RlM0WWtwVHRFclY0MU9FMEFpM1gNClIxNlcrT3REa1p3bTZRVTY0VnUzSmJvQkFMMURM QngxRExLRE5kclZhTUZ1NGp4MXBZV0JqTEpVZ0xLeg0Kc2wzM2pETU0NCj01dWlWDQotLS0tLUVO RCBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tDQo= -----------------------47f98dbaa78aebc339c8b32595c26af6--
-----BEGIN PGP SIGNATURE-----
Version: ProtonMail
wnUEARYKAAYFAmJ9jEcAIQkQW9Uk1y/i+TQWIQTpQpuHivYIN4fpgUFb1STX L+L5NMxaAP95JiH6MKdZXcEkSvFCRoDRmNOt/Zwy2UfwrelV0cJB7QD8DHwF qcg1GcXTTTgtcAX1mYVtFhUQ8VZTOdMRAOEbswg=
=RI6p
-----END PGP SIGNATURE-----
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)