Supprimer entre expressions régulieres sur plusieurs lignes

Résolu/Fermé
th.deudon Messages postés 399 Date d'inscription mardi 2 juillet 2013 Statut Membre Dernière intervention 30 juillet 2015 - Modifié par th.deudon le 12/07/2013 à 10:40
th.deudon Messages postés 399 Date d'inscription mardi 2 juillet 2013 Statut Membre Dernière intervention 30 juillet 2015 - 22 juil. 2013 à 08:41
Bonjour à tous ( toutes ) ,

Je voulais savoir si il existait une commande permettant de dire si tu vois l'expression régulière "X" à telle ligne, tu supprimes toutes les lignes suivante jusqu'à voir l'expression régulière "Y", sur un fichier donné, je pense à SED ou AWK , mais je suis à l'écoute de vos propositions.

( en fait c'est pour enlever les informations "commentaires" , sauf que le commentaire n'est pas par un # en début de ligne, il est par un <!-- et peux se terminer 20 lignes après par un --> ).

Si vous avez besoin de plus de renseignements, demandez moi.


Le programme est comme vous l'auriez surement compris, en xml
Je programme sur le Shell ( obligatoirement :) )
A voir également:

2 réponses

mamiemando Messages postés 33346 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 novembre 2024 7 803
12 juil. 2013 à 10:46
1
th.deudon Messages postés 399 Date d'inscription mardi 2 juillet 2013 Statut Membre Dernière intervention 30 juillet 2015 15
Modifié par th.deudon le 12/07/2013 à 11:43
ca ne marche pas ( surement car mon <!-- est collé à un "unit" de meme, le caractere final est </unit--> .. comment je les remplace, je n'ai pas compris pourquoi il faut deux truc, et pourquoi il faut <--! par exemple
et qu'elle sont apres des espace, du coup j'enleve le ^?
0
th.deudon Messages postés 399 Date d'inscription mardi 2 juillet 2013 Statut Membre Dernière intervention 30 juillet 2015 15
12 juil. 2013 à 11:45
ce que je veux supprimmer est sous cette forme
<!--unit ..........>
............
........
</unit-->
tout ca doit partir :p
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
12 juil. 2013 à 11:49
Salut,

sed '\#^<!--unit#,\#^</unit#d' fichier
0
th.deudon Messages postés 399 Date d'inscription mardi 2 juillet 2013 Statut Membre Dernière intervention 30 juillet 2015 15
12 juil. 2013 à 11:54
ca ne marche pas :/ et j'ai testé avec </unit--> aussi
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
12 juil. 2013 à 11:55
Les "<!--unit ..........> " et "</unit" sont bien début de ligne ?
0
th.deudon Messages postés 399 Date d'inscription mardi 2 juillet 2013 Statut Membre Dernière intervention 30 juillet 2015 15
19 juil. 2013 à 16:28
Je ne veux pas créer de sujet pour un problème aussi similaire :

Si je veux au contraire garder ce qu'il y a dans les balises
<Unit> et </Unit> ?


* Même chose, pas forcement au début, il peut y avoir des espaces, et pas sur la même ligne
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
19 juil. 2013 à 16:39
* Même chose, pas forcement au début, il peut y avoir des espaces, et pas sur la même ligne
Exemple concret* merci.


* Sans oublier les balises codes, hein ?
0
th.deudon Messages postés 399 Date d'inscription mardi 2 juillet 2013 Statut Membre Dernière intervention 30 juillet 2015 15
20 juil. 2013 à 14:22
        <Unit> blabla
blabla
    blabla
       </Unit>
abzzz
    af 
<Unit>
blabla
</Unit>


je dois récupérer tout les blabla
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
20 juil. 2013 à 14:28
$ cat plop 
        <Unit> blabla
blabla
    blabla
       </Unit>
abzzz
    af 
<Unit>
blabla
</Unit>

$ sed -n '/<Unit>/,\#</Unit#{//d;p}' plop 
blabla
    blabla
blabla

$ 
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
20 juil. 2013 à 15:00
Oups, même si la solution est la plus simple, elle ne prend pas en compte le fait que le 1er '<Unit>" a du "blabla" derrière et donc n'affiche pas le 1er blabla ;-((

Essaie avec ça :

$ cat plop 
        <Unit> blabla1
blabla2
    blabla3
       </Unit>
abzzz
    af 
<Unit>
blabla4
</Unit>
bbb

$ sed -n '/<Unit>/{h;:z;n;\#</Unit>#!{H;bz};x;s/ *<Unit>\n*//p;}' plop 
 blabla1
blabla2
    blabla3
blabla4

$ 
0
th.deudon Messages postés 399 Date d'inscription mardi 2 juillet 2013 Statut Membre Dernière intervention 30 juillet 2015 15
22 juil. 2013 à 08:41
Parfait, ca marche du tonnerre :)
0