Traitement de texte ksh

Résolu
dino -  
 dino -
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. UnGnU Messages postés 1468 Statut Contributeur 158
     
    Salut,

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

    0
  2. dino
     
    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. UnGnU Messages postés 1468 Statut Contributeur 158
       
      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
  3. dino
     
    c'est ligne par ligne qu m'interesse ...

    de n ligne a n ligne...
    0
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    comme ça ?
    $ awk '/Debut/ {n=1} /Fin/ {n=0; print} n' fichier

    ou comme ca ?
    $ awk '/Debut/ {print} /Fin/ {print}' fichier 
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dino
     
    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. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      le post #1 ne parle pas de découpe,quel est le résultat attendu ?
      0
  7. dino
     
    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
  8. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    essayer
    $ awk '/DEBUT/ {n=1; f++} n {print > "fich" f} /FIN/ {n=0}' fichier
    0
  9. dino
     
    DUBCEK t'es le KING !!!!!!
    ca fonctionne !!!!!

    MERCI !!!!
    0
  10. dino
     
    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
  11. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    $ NOM="fich"; awk -v nom="$NOM" '/DEBUT/ {n=1; f++} n {print > nom f} /FIN/ {n=0}' fichier
    0
  12. dino
     
    super !!! ca fct ...

    merci merci merci beaucoup Dubcek !!!!!
    0