[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: remplacer le caractère "<92>" par une apostrophe



Bonsoir,
 
> le n° "<92>" est l'apostrophe  mais de quel encodage ? (mystère et
> boulle de gomme) et c'est la sortie avec vim ...
> 
> tandis que avec emacs c'est "\222" ( ’ )
> 
> voici un extrait en pièce jointe ...

Personnellement, sur ma machine, la commande « file » me dit que ton
fichier est en UTF-8 et je comprends que le caractère qui pose problème
est le caractère dont le code point unicode est U+0092 (attention, le
code point ce n'est pas la même chose que l'encodage numérique).

    ~$ file /tmp/out.txt 
    /tmp/out.txt: UTF-8 Unicode text, with very long lines

En fait, il suffit a priori de saisir le caractère dans sed et un simple :

    sed "s/<LE-CARACTÈRE>/'/g" le-fichier.txt

devrait marcher, exactement comme si on voulait remplacer les « a » par
des « ' » sauf qu'ici ce n'est pas un « a » mais un caractère un peu
étrange.

Une première méthode que j'ai pu tester est de générer le caractère avec
Perl (a priori déjà installé sur ta Debian à 99,99%) :

    char=$(perl -C -wE 'say "\x{0092}"')
    sed -i "s/$char/'/g" le-fichier.txt

Une autre façon de faire est de taper le caractère directement dans le
terminal (là je sais pas si ça marchera partout) en tapant sur le clavier
(alors qu'on est dans un terminal) « shift + u + le-code-point-du-caractère ».
Donc si je tape les caractères suivants :

=> « sed -i "s/ »
=> puis « shift + u + 0092 »
=> puis « /'/g" le-fichier.txt »
=> puis Entrée

alors la commande fonctionne chez moi.

Bref, les 2 méthodes ont fonctionné sur ma Debian Wheezy avec ton
fichier en pièce jointe (md5sum => 83070902dea2600878d40602c396c0d4)
sur mon terminal qui est Terminator en l'occurrence.

Voilà, j'espère qu'au moins une des deux méthodes marchera chez toi.

-- 
François Lafont


Reply to: