Traitement de texte ksh

Résolu/Fermé
dino - 15 sept. 2017 à 08:15
 dino - 18 sept. 2017 à 15:27
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 lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157
15 sept. 2017 à 09:04
Salut,

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

0
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 lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157
15 sept. 2017 à 11:11
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
c'est ligne par ligne qu m'interesse ...

de n ligne a n ligne...
0
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
Modifié le 15 sept. 2017 à 12:16
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
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 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
15 sept. 2017 à 12:18
le post #1 ne parle pas de découpe,quel est le résultat attendu ?
0
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
desolé erreur de frappe
""DEBUT/FIN"
0
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
Modifié le 15 sept. 2017 à 12:44
essayer
$ awk '/DEBUT/ {n=1; f++} n {print > "fich" f} /FIN/ {n=0}' fichier
0
DUBCEK t'es le KING !!!!!!
ca fonctionne !!!!!

MERCI !!!!
0
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 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
Modifié le 18 sept. 2017 à 13:14
$ NOM="fich"; awk -v nom="$NOM" '/DEBUT/ {n=1; f++} n {print > nom f} /FIN/ {n=0}' fichier
0
super !!! ca fct ...

merci merci merci beaucoup Dubcek !!!!!
0