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 ?

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