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. super !!! ca fct ...

    merci merci merci beaucoup Dubcek !!!!!
    0
    1. Contributeur
      $ NOM="fich"; awk -v nom="$NOM" '/DEBUT/ {n=1; f++} n {print > nom f} /FIN/ {n=0}' fichier
      0
      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 ?
        0
        1. DUBCEK t'es le KING !!!!!!
          ca fonctionne !!!!!

          MERCI !!!!
          0
          1. Contributeur
            essayer
            $ awk '/DEBUT/ {n=1; f++} n {print > "fich" f} /FIN/ {n=0}' fichier
            0
            1. desolé erreur de frappe
              ""DEBUT/FIN"
              0
              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
                0
                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
                  0
                  1. Contributeur
                    le post #1 ne parle pas de découpe,quel est le résultat attendu ?
                    0
                2. Contributeur
                  hello
                  comme ça ?
                  $ awk '/Debut/ {n=1} /Fin/ {n=0; print} n' fichier

                  ou comme ca ?
                  $ awk '/Debut/ {print} /Fin/ {print}' fichier 
                  0
                  1. c'est ligne par ligne qu m'interesse ...

                    de n ligne a n ligne...
                    0
                    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"
                      0
                      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.
                        0
                    2. Contributeur
                      Salut,

                      grep -A 1 'DEBUT'  FICHIER.txt
                      devrait le faire, non ?

                      0