# commande sed changement caractere



## symbol (1 Décembre 2018)

Bonjour

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

J'ai fais

```
sed -i -e 's/Ã©/é/g' /Users/xxx/Desktop/RESULTATS1.txt
```

j'obtiens

```
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 "é"

```
sed -i -e 's/Ã©/e/g' /Users/xxx/Desktop/RESULTATS1.txt
```


----------



## Membre supprimé 1129907 (1 Décembre 2018)

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 ...


----------



## symbol (1 Décembre 2018)

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


----------



## symbol (1 Décembre 2018)

Je vais me débrouiller


----------



## symbol (1 Décembre 2018)

..


----------



## symbol (1 Décembre 2018)

Je me rappelle plus

SI je fais :

```
sed -e 's/Ã©/é/g' > /Users/xxx/Desktop/RESULTATSvocal.txt
```

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

C'est obligatoire le -i ?

```
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


----------



## Membre supprimé 1129907 (1 Décembre 2018)

Voici les deux possibilités :

```
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
```


----------



## symbol (1 Décembre 2018)

si je fais


```
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 ?

```
sed -i -e 's/Ã©/é/g' /Users/xxx/Desktop/RESULTATSvocal.txt
```

 "rm  /Users/xxx/Desktop/KENODATA/RESULTATSvocal.txt-e"


----------



## Membre supprimé 1129907 (1 Décembre 2018)

Oups, effectivement, comme ça ce devrait être mieux :

```
sed -i '' -e 's/Ã©/é/g' /Users/xxx/Desktop/RESULTATSvocal.txt
```

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


----------

