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

UnGnU Messages postés 1158 Date d'inscription   Statut Contributeur Dernière intervention   158
 
Salut,

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

0
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
UnGnU Messages postés 1158 Date d'inscription   Statut Contributeur Dernière intervention   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
dino
 
c'est ligne par ligne qu m'interesse ...

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

ou comme ca ?
$ awk '/Debut/ {print} /Fin/ {print}' fichier 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

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

merci merci merci beaucoup Dubcek !!!!!
0