Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Script de remplacement de caractères

4 réponses
Avatar
Vincent Ramos
Bonsoir,

J'ai tenté d'écrire ce soir (ou matin, comme on voudra) mon premier
script en bash. Vu que je débute, je ne connais que très peu sa
syntaxe. J'ai conscience qu'il est mal parti ainsi et viens demander
de l'aide.

J'aimerais qu'il transforme un fichier texte codé en utf-8 en latin-1
tout en transcrivant les caractères qui n'appartiennent pas à latin-1
en entités numériques html.

Malheureusement, ce script serait très laid tel quel :

#!/bin/sh
replace é _eaigu ê _ecirc < essai.txt > essai2.txt
#Vu que je compte me servir de recode, il me faut protéger les
caractères qui existent déjà en latin-1 pour l'empêcher de les
transformer en entités. Je veux qu'ils restent en brut. Pour ce
faire, je les remplace par des fausses entités. C'est là que le bât
blesse : si je dois entrer à la main tous les caractères non ASCII de
latin-1, cela risque d'être très fastidieux. Je cherche à automatiser
ce processus, sachant que tous ces caractères sont compris entre
U+00A1 et U+00FF. De même, pour les alias, il serait possible de
définir un nom avec une variable qui serait incrémentée à chaque fois
qu'un nouveau caractère étendu serait rencontré. Par exemple, si le
fichier contient seulement de /é/, /è/ et /à/, on aurait _carac1,
_carac2, _carac3. De toutes ces idées, je ne sais en appliquer
aucune...

recode ..h essai2.txt
#Une fois les caractères de U+00A1 à U+00FF protégés, je peux recoder
le fichier sans problème depuis utf-8 à html-4.

replace _eaigu é _ecirc ê < essai2.txt > essai3.txt
#Là, je retranscris mes alias en caractères bruts à partir de
essai2.txt. Je me suis rendu compte que si je tentais de garder un
seul fichier, j'obtenais en sortie un fichier vide. Je dois donc
utiliser à chaque opération un fichier différent.

recode h..latin1 essai3.txt
#Si je veux vraiment du latin-1. Comme mon but est de convertir des
fichiers pour des articles sur Wikipédia, le copier-coller depuis le
fichier dans une zone de texte du navigateur m'évite d'avoir à faire
cela.

mv essai3.txt essai.txt
#J'écrase le fichier de départ avec le nouveau.

rm essai?.txt
#J'efface les fichiers de transit.

Bon, comme vous le voyez, je suis loin d'arriver à un résultat
probant. Pour l'instant, cela marche avec les /é/ et les /ê/ mais ce
procédé me semble laid.

J'ai tenté d'utiliser tr, auquel on peut fournir des plages de
caractères, mais en vain. De plus, on m'a dit qu'avec Perl c'était
très facile. Je préfèrerais utiliser bash, pour en apprendre un peu
plus.

Merci de tout conseil,

Vincent

--
Je participe au projet Wikipédia <http://fr.wikipedia.org/>, et vous ?
<http://fr.wikipedia.org/wiki/Utilisateur:Vincent_Ramos>

4 réponses

Avatar
nicolas
On Sun, 21 Dec 2003 02:53:03 +0100, Vincent Ramos wrote:

J'ai tenté d'écrire ce soir (ou matin, comme on voudra) mon premier
script en bash. Vu que je débute, je ne connais que très peu sa
syntaxe. J'ai conscience qu'il est mal parti ainsi et viens demander
de l'aide.

J'aimerais qu'il transforme un fichier texte codé en utf-8 en latin-1
tout en transcrivant les caractères qui n'appartiennent pas à latin-1
en entités numériques html.


konwert fait ça, il devrait bien exister pour ta distribution.
PS : tu es sur le mauvais forum !

nicolas patrois : pts noir asocial
--
GLOU-GLOU

P : Ouerk ! C'est dégueulasse, j'ai bu la tasse !
M : Panique pas... La mer est pleine de microbes, mais tellement dilués qu'ils sont inoffensifs...
P : C'est ça... La mer, c'est de la merde homéopathique !

Avatar
Vincent Ramos

konwert fait ça, il devrait bien exister pour ta distribution.


D'accord. Bon, il y a un problème de dépendances, mais apparemment,
c'est ce qu'il me faut.

PS : tu es sur le mauvais forum !


Ah. Dans ce cas, quel est le bon ?

Merci,
Vincent

Avatar
Vincent Ramos

J'aimerais qu'il transforme un fichier texte codé en utf-8
en latin-1 tout en transcrivant les caractères qui n'appartiennent
pas à latin-1 en entités numériques html.


Bon, j'ai trouvé, et c'est très simple :
recode -i ..html < texte.txt > texte.txt
recode -d -i html..u8 < texte.txt > texte.txt

Voilà...

Avatar
nicolas
On Sun, 21 Dec 2003 12:41:17 +0100, Vincent Ramos wrote:

D'accord. Bon, il y a un problème de dépendances, mais apparemment,
c'est ce qu'il me faut.


Ta distro ne sait pas gérer ça ?

PS : tu es sur le mauvais forum !


Ah. Dans ce cas, quel est le bon ?


Euh, cherche dans fr.comp, je n'ai pas de nom. M'enfin ce n'est pas grave,
tu as eu une réponse.

nicolas patrois : pts noir asocial
--
GLOU-GLOU

P : Ouerk ! C'est dégueulasse, j'ai bu la tasse !
M : Panique pas... La mer est pleine de microbes, mais tellement dilués qu'ils sont inoffensifs...
P : C'est ça... La mer, c'est de la merde homéopathique !