sed et suppression de blocs de lignes
Le
Kevin Denis
Bonjour,
j'ai un document texte qui contient deux types de blocs que je dois
supprimer.
Le premier bloc est bien délimité. Il est:
#begin_bloc
()
#end_bloc
sed devrait s'en sortir sans trop de mal. Par contre le deuxième type
de bloc est plus fin a critériser:
#begin_sld
sld:
()
sld:
()
sld:
()
#end_sld
Et je ne dois récupérer que les lignes comprises entre le dernier
sld: (inclus) et le end_sld. Et là, j'ai un peu plus de mal..
Généralement il n'y a qu'un seul 'sld', mais il peut y en avoir
beaucoup (pas plus qu'une dizaine ceci dit).
Avez vous une idée?
Les délimiteurs sont arbitraires et ne peuvent être trouvés ailleurs
dans le doc. Le # est le symbole de commentaire, peu importe qu'il
soit présent ou non dans le fichier définitif.
Merci
--
Kevin
j'ai un document texte qui contient deux types de blocs que je dois
supprimer.
Le premier bloc est bien délimité. Il est:
#begin_bloc
()
#end_bloc
sed devrait s'en sortir sans trop de mal. Par contre le deuxième type
de bloc est plus fin a critériser:
#begin_sld
sld:
()
sld:
()
sld:
()
#end_sld
Et je ne dois récupérer que les lignes comprises entre le dernier
sld: (inclus) et le end_sld. Et là, j'ai un peu plus de mal..
Généralement il n'y a qu'un seul 'sld', mais il peut y en avoir
beaucoup (pas plus qu'une dizaine ceci dit).
Avez vous une idée?
Les délimiteurs sont arbitraires et ne peuvent être trouvés ailleurs
dans le doc. Le # est le symbole de commentaire, peu importe qu'il
soit présent ou non dans le fichier définitif.
Merci
--
Kevin

Poser une question


<snip>
effectivement
<snip>
en sed, ce doit être jouable, mais avec les lettres en MAJUSCULES, le x
et une logique à réveiller un mort... plus simple en awk... :-)
à chaque fois que tu rencontres ton délimiteur de début, tu commenc es à
empiler les lignes. si tu le rencontres à nouveau, tu raz, et
recommences. si tu rencontres le délimiteur de fin, tu affiches les
lignes sauvegardées. si tu es hors délimiteur, tu affiche toutes les
lignes. avec 1 ou 2 drapeaux, ce ne doit pas pas compliqué à implém enter.
Cordialement,
Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
Certes.
Je vais faire plus simple je crois. Autant reprendre la même logique dans
les deux cas:
#begin_bloc2
sld:
(...)
sld:
(...)
#end_bloc2
sld:
(...)
Ca me demande juste un peu de refactoring du fichier au début, et ça
sera plus simple ensuite.
--
Kevin
bonsoir,
je ne suis pas une spécialiste de sed mais la flemme
m'inspire une solution possible :
peux-tu inverser ton fichier (tac je crois)
et il sera plus simple de repérer pour supprimer ou garder chaque 1er
bloc :
#end_sld
(...)
sld:
puis de réinverser les lignes...
--
Marie-Claude Collilieux
Bretagne