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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Cyrille Lefevre
Le #22313491
Le 29/06/2010 17:36, Kevin Denis a écrit :
<snip>
sed devrait s'en sortir sans trop de mal. Par contre le deuxième type



effectivement

<snip>
Avez vous une idée?



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.
Kevin Denis
Le #22314451
Le 30-06-2010, Cyrille Lefevre a écrit :
<snip>
sed devrait s'en sortir sans trop de mal. Par contre le deuxième type


effectivement

<snip>
Avez vous une idée?



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... :-)



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
mcc
Le #22316841
Kevin Denis a écrit :

Bonjour,

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?



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
Publicité
Poster une réponse
Anonyme