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
    Salut,

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

    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. c'est ligne par ligne qu m'interesse ...

      de n ligne a n ligne...
      0
      1. 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. 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. 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. desolé erreur de frappe
            ""DEBUT/FIN"
            0
            1. Contributeur
              essayer
              $ awk '/DEBUT/ {n=1; f++} n {print > "fich" f} /FIN/ {n=0}' fichier
              0
              1. DUBCEK t'es le KING !!!!!!
                ca fonctionne !!!!!

                MERCI !!!!
                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. Contributeur
                    $ NOM="fich"; awk -v nom="$NOM" '/DEBUT/ {n=1; f++} n {print > nom f} /FIN/ {n=0}' fichier
                    0
                    1. super !!! ca fct ...

                      merci merci merci beaucoup Dubcek !!!!!
                      0