Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/12/2009, à 10:47

bIBAR

[Résolu] BASH Comment remplacer le premier caractère '<' suivant ...

Bonjour,
Pour le balisage d'un document je suis confronté à une colle. Peut-être certains parmi vous sauraient m'aider.
Mon documment xml (>36000 lignes) contient toutes les lignes des séquences de ce type :

<entry><form>blabla <lbl>bla</lbl></form>
<sense>Blabla</sense></entry>

Je cherche à encadrer les CDATA contenu dans form dans des balises <orth>.
Pour remplacer <entry><form> par <entry><form><orth> aucun souci. En revanche plusieurs problèmes pour fermer la balise:
-ce n'est pas toujours <lbl> qui est la première balise suivante, ce peut être <pos> ou <gen> ou <usg>.
-et ces autres balises sont présentes assez souvent dans d'autres contextes.

Ma question est donc "comment remplacer le premier caractère '<' suivant le motif '<entry><form>' par '</orth><" ?
Si c'était en bash ce serait super mais l'objectif est que ça marche... Ce peut donc être dans une autre langage.

Merci pour votre attention.

Dernière modification par bIBAR (Le 07/12/2009, à 08:08)


Correcteur et logiciels Libres en Breton
Difazier & Meziantoù e brezhoneg
Firefox, LibreOffice, Thunderbird, Gimp, GCompris ha traoù...
http://www.drouizig.org

Hors ligne

#2 Le 04/12/2009, à 11:44

Totor

Re : [Résolu] BASH Comment remplacer le premier caractère '<' suivant ...

Bonjour,

Voilà qui devrait faire l'affaire :

sed 's@\(<entry><form>[^<]*\)<@\1/orth><@g' <nomfichier>

-- Lucid Lynx --

Hors ligne

#3 Le 04/12/2009, à 12:22

bIBAR

Re : [Résolu] BASH Comment remplacer le premier caractère '<' suivant ...

Merci beaucoup !
j'essaie ça ce soir, nouvelles lundi !


Correcteur et logiciels Libres en Breton
Difazier & Meziantoù e brezhoneg
Firefox, LibreOffice, Thunderbird, Gimp, GCompris ha traoù...
http://www.drouizig.org

Hors ligne

#4 Le 04/12/2009, à 17:18

Hizoka

Re : [Résolu] BASH Comment remplacer le premier caractère '<' suivant ...

sed -i 's@\(<entry><form>[^<]*\)<@\1</orth><@g' <nomfichier>

avec un le -i pour modifier ton fichier directement, mais surtout avec : </orth> et non /orth> (ouais !! j'ai repris une faute de Totor tongue)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#5 Le 05/12/2009, à 11:35

bIBAR

Re : [Résolu] BASH Comment remplacer le premier caractère '<' suivant ...

Merci bien, pour toutes ces infos.
Je m'en étais sorti avec une redirection >resultat.xml et un autre sed tout simple. Merci beaucoup !
Pas simple la syntaxe, je ne suis pas de savoir m'y retrouver. Mais à force d'essais, ça ira...
Merci encore !


Correcteur et logiciels Libres en Breton
Difazier & Meziantoù e brezhoneg
Firefox, LibreOffice, Thunderbird, Gimp, GCompris ha traoù...
http://www.drouizig.org

Hors ligne

#6 Le 05/12/2009, à 13:18

Totor

Re : [Résolu] BASH Comment remplacer le premier caractère '<' suivant ...

Hizoka a écrit :

sed -i 's@\(<entry><form>[^<]*\)<@\1</orth><@g' <nomfichier>

avec un le -i pour modifier ton fichier directement, mais surtout avec : </orth> et non /orth> (ouais !! j'ai repris une faute de Totor tongue)

C'est étrange, je sais que je l'avais homis volontairement car normalement, c'était \(<entry><form>[^<]*<\) et non \(<entry><form>[^<]*\)<


-- Lucid Lynx --

Hors ligne

#7 Le 06/12/2009, à 14:14

Hizoka

Re : [Résolu] BASH Comment remplacer le premier caractère '<' suivant ...

juste une inversion dans ta reponse, rien de bien mechant wink

un petit resolu dans le titre.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne