commande sed changement caractere

symbol

Membre actif
13 Octobre 2004
536
25
Bonjour

Dans un fichier UTF-16 texte j'ai "décembre".
Je voudrais remplacer "é" par "é".

J'ai fais
Bloc de code:
sed -i -e 's/é/é/g' /Users/xxx/Desktop/RESULTATS1.txt

j'obtiens
Bloc de code:
iMac-de-xxx:~ xxx$ sed -i -e 's/é/é/g' /Users/xxx/Desktop/RESULTATS1.txt
sed: RE error: illegal byte sequence

GRrrrrrr :(

Une idée ? :)
PS: le fichier doit rester en UTF-16

Merci


Etrangement cette commande fonctionne si je remplace par un "e" et pas "é"
Bloc de code:
sed -i -e 's/é/e/g' /Users/xxx/Desktop/RESULTATS1.txt
 
Dernière édition:
C'est que ton fichier n'est pas vraiment en UTF-16 (iconv pour la conversion en UTF8/16 ou autre) ;)
Ta commande sed est pourtant correcte... par contre il me semble que l'option "-i" ne fonctionne pas pareil sur macOS

C'est sans doute à cause de l'encodage que la fonction sed bug ...
 
J'en chie avec mes encodages LOL

Quand je change a la main dans BBEDIT cette lettre puis que je sauvegarde c'est nickel.
Si je le fais avec sed, ca foire :(
 
Je me rappelle plus

SI je fais :
Bloc de code:
sed -e 's/é/é/g' > /Users/xxx/Desktop/RESULTATSvocal.txt

c'est pour ca modifier le contenu d'un fichier ?

C'est obligatoire le -i ?
Bloc de code:
sed -i -e 's/é/é/g' > /Users/xxx/Desktop/RESULTATSvocal.txt

SI je met pas -i ca modifie et affiche le resultat a l'ecran seulement
Si je met -i , du coup je me retrouve avec un fichier "RESULTATSvocal.txt-e" dont j'ai pas besoin
 
Dernière édition:
Voici les deux possibilités :
Bloc de code:
sed -e 's/é/é/g'/ Users/xxx/Desktop/RESULTATSvocal.txt > /Users/xxx/Desktop/RESULTATSvocal_modifié.txt
sed -i -e 's/é/é/g' /Users/xxx/Desktop/RESULTATSvocal.txt
 
si je fais

Bloc de code:
sed -e 's/é/é/g'/ Users/xxx/Desktop/RESULTATSvocal.txt > /Users/xxx/Desktop/RESULTATSvocal_modifié.txt

le fichier est vide

ah nnoonnnn il faut choisir un autre nom !

ca, ca marche aussi, mais pourquoi j'ai un fichier parasite "RESULTATSvocal.txt-e" , c'est un fichier temporaire ?
Bloc de code:
 sed -i -e 's/é/é/g' /Users/xxx/Desktop/RESULTATSvocal.txt

"rm /Users/xxx/Desktop/KENODATA/RESULTATSvocal.txt-e"
 
Dernière édition:
Oups, effectivement, comme ça ce devrait être mieux :
Bloc de code:
sed -i '' -e 's/é/é/g' /Users/xxx/Desktop/RESULTATSvocal.txt

Sinon, l'option "-i" prend le "-e" comme extension pour le fichier de backup ;)