#1 Le 19/06/2012, à 17:58
- roger64
[résolu] commande de nettoyage avec sed
Bonjour
Je fais des essais d'un OCR libre Cuneiform. Il produit quelques erreurs récurrentes que je cherche à éliminer en faisant successivement des recherches et des remplacements sur le fichier source html (ex è → è). Pourtant le fichier est bien en utf8.
J'ai regroupé une liste d'erreurs sur le fichier fix.sed de cette façon:
s/é/é/g
s/è/è/g
s/ê/ê/g
s/ç/ç/g
s/À/À/g
s/— /— /g
s/Ã/à/g
s/…/.../g
s/ù/ù/g
s/â/a/g
s/ô/ô/g
s/î/î/g
Je m'assure que le fichier fix.sed est bien dans le dossier de travail.
Ensuite; je lance la commande suivante sur le fichier html qui va bien (complet.html)
sed -f fix.sed -i complet.html
Il ne se passe pas grand-chose. Ai-je fait les choses correctement?
Dernière modification par roger64 (Le 19/06/2012, à 21:52)
Hors ligne
#2 Le 19/06/2012, à 18:19
- miniSeb
Re : [résolu] commande de nettoyage avec sed
Le problème ne vient pas du contenu du fichier, mais de l'affichage. Ton fichier contient bien les caractères é è et compagnie, pas les é, è... Ton sed infile ne sert donc à rien ; il n'y a rien à remplacer.
Illustration :
$ cat > test
&é"'(§è!çà)-
$ file -i test
test: text/plain; charset=utf-8
Et l'affichage dans chromium paramétré sur Latin1 :
&é"'(§è!çà )-
Le fichier test contient les caractères “normaux”, c'est le logiciel qui n'affiche pas le contenu sous le bon codage.
Tu utilises quel logiciel pour afficher complet.html ?
Que donne file -i complet.html ?
Hors ligne
#3 Le 19/06/2012, à 21:13
- roger64
Re : [résolu] commande de nettoyage avec sed
Bonjour
roger@lmde64 ~/Bureau/ $ file -i complet.html
complet.html: text/plain; charset=utf-8
Voici à quoi peut ressembler en l'ouvrant avec OO, un paragraphe du fichier que je veux corriger (à savoir le fichier appelé complet.html.) Ce n'est pas la meilleure page...
Les caractères bizarroïdes apparaissent avec OO. Si je les prends séparément, en faisant un rechercher /remplacer avec OO, j'obtiens de bons résulatats. les problème est qu'il faudrait le faire à répétition et passer toute la liste que j'ai relevée dans fix.sed (voir premier message).
Avec quoi devrais-je ouvrir le fichier html?
EDIT: Tu as absolument raison. Je passe une commande préalable qui est destinées à recoller les fichiers html et produit le fichier appelé complet.html. Malheureusement, je m'aperçois que c'est aussi cette commande qui écharpe le texte. J'ai ouvert avec Bluefish l'un des petits fichiers d'origine et il n'y a pas ces caractères bizarres.
La commande fautive est celle-ci:
sed '1,/<body/!d' hussard-000.html > complet.html
sed '/<body/,/<\/body>/!d;/<body/d;s/<\/body>//' hussard-*.html >> complet.html
echo "</body></html>" >> complet.html
Le problème est que cette commande est bien utile. Je ne sais pas comment on pourrait la réparer.
EDIT2: En regardant avec Bluefish, je vois que le fichier complet.html n'a pas d'en-tête. Cela ira déjà mieux si je le rajoute...
Je faisais une erreur avec la commande. Il faut absolument que je cite le premier fichier de la liste pour récupérer son en-tête. Je vais étudier ça.
Merci de ton aide et de tes explications.
EDIT3: résolu. En fait il faut absolument que je commence par un fichier 000 pour avoir un en-tête. S'il n'existe pas, il faut en renommer un. C'est la vie.
Dernière modification par roger64 (Le 19/06/2012, à 21:51)
Hors ligne