Traitement de texte ksh

Résolu
Bonjour tout le monde ,

je doit extraire a chaque fois la ligne "Debut" et lui associer la ligne "Fin" qui vient juste apres ,et je passe au suivant "Debut" et le "Fin" qui vient juste apres
ainsi de suite justqu'a la fin ...
J'ai essayer :
for i in `grep "Debut" FICHIER.txt ` ;do
grep "Fin" FICHIER.txt >resultat1
done

mais ca me renvoie tout les "Fin" ...

Si qlq a une idée ...
Merci beaucoup

Unix AIX 7.1

12 réponses

  1. Contributeur
    $ NOM="fich"; awk -v nom="$NOM" '/DEBUT/ {n=1; f++} n {print > nom f} /FIN/ {n=0}' fichier
    1. Bonjour ,

      euh est ce que je peux abuser de ta gentillesse :-( ???

      dans ta commande :
      $ awk '/DEBUT/ {n=1; f++} n {print > "fich" f} /FIN/ {n=0}' fichier

      est ce qu'on peut variabliser "fich" pour le forcer a prendre le nom qu'on veut ?
      1. Contributeur
        essayer
        $ awk '/DEBUT/ {n=1; f++} n {print > "fich" f} /FIN/ {n=0}' fichier
        1. le resultat attendu est n fichier ,autant qu'il y'a de "DEBUT/FIN3
          cat fich1
          DEBUT
          1
          2
          3
          FIN

          cat fich2
          DEBUT
          4
          6
          9
          FIN

          cat fich3
          DEBUT
          4
          8
          0
          FIN

          et on peut aller comme ca jusqu'a n fichier
          1. non , ca me le decoupe pas :-(
            cat fichier
            DEBUT
            1
            2
            3
            FIN
            DEBUT
            4
            6
            9
            FIN
            DEBUT
            4
            8
            0
            FIN

            resultat de la commande
            awk '/DEBUT/ {n=1} /FIN/ {n=0; print} n' fichier

            DEBUT
            1
            2
            3
            FIN
            DEBUT
            4
            6
            9
            FIN
            DEBUT
            4
            8
            0
            FIN
            1. Contributeur
              le post #1 ne parle pas de découpe,quel est le résultat attendu ?
          2. Contributeur
            hello
            comme ça ?
            $ awk '/Debut/ {n=1} /Fin/ {n=0; print} n' fichier

            ou comme ca ?
            $ awk '/Debut/ {print} /Fin/ {print}' fichier 
            1. Merci pour la reponse , mais ca ne passe pas :
              grep: Not a recognized flag: A

              voici le fichier :
              Debut XXXXXXX XXXXX XXXXXXXX
              XXXXXXX XXXXX XXXXXXXX
              XXXXXXX XXXXX XXXXXXXX
              XXXXXXX XXXXX XXXXXXXX
              XXXXXXX XXXXX XXXXXXXX
              XXXXXXX XXXXX XXXXXXXX
              Fin XXXXXXX XXXXX XXXXXXXX
              Debut XXXXXXX XXXXX XXXXXXXX
              XXXXXXX XXXXX XXXXXXXX
              XXXXXXX XXXXX XXXXXXXX
              XXXXXXX XXXXX XXXXXXXX
              XXXXXXX XXXXX XXXXXXXX
              Fin XXXXXXX XXXXX XXXXXXXX
              .
              .
              .

              Ce qui minteresse c'est d'extraire a chaque fois les partie "Debut" a "Fin"
              1. Contributeur
                Ce n'est pas grep qu'il te faut utiliser, mais awk puisque tu dois aussi, si j'ai bien compris, récupérer chaque partie dans un fichier différent.