Signaler

Traitement de texte ksh [Résolu]

Posez votre question dino - Dernière réponse le 18 sept. 2017 à 15:27 par 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



Utile
+0
plus moins
Salut,

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

Donnez votre avis
Utile
+0
plus moins
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"
UnGnU 524Messages postés lundi 2 mai 2016Date d'inscription 22 septembre 2017 Dernière intervention - 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.
Répondre
Donnez votre avis
Utile
+0
plus moins
c'est ligne par ligne qu m'interesse ...

de n ligne a n ligne...
Donnez votre avis
Utile
+0
plus moins
hello
comme ça ?
$ awk '/Debut/ {n=1} /Fin/ {n=0; print} n' fichier

ou comme ca ?
$ awk '/Debut/ {print} /Fin/ {print}' fichier 
Donnez votre avis
Utile
+0
plus moins
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
dubcek 17051Messages postés lundi 15 janvier 2007Date d'inscription ContributeurStatut 20 septembre 2017 Dernière intervention - 15 sept. 2017 à 12:18
le post #1 ne parle pas de découpe,quel est le résultat attendu ?
Répondre
Donnez votre avis
Utile
+0
plus moins
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
Donnez votre avis
Utile
+0
plus moins
desolé erreur de frappe
""DEBUT/FIN"
Donnez votre avis
Utile
+0
plus moins
essayer
$ awk '/DEBUT/ {n=1; f++} n {print > "fich" f} /FIN/ {n=0}' fichier
Donnez votre avis
Utile
+0
plus moins
DUBCEK t'es le KING !!!!!!
ca fonctionne !!!!!

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

merci merci merci beaucoup Dubcek !!!!!
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !