#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 )
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 ...
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 )
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
un petit resolu dans le titre.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne