Découper un fichier.txt en plusieurs partie [Résolu]

Messages postés
195
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
8 août 2019
- - Dernière réponse : lEprofSonDkon
Messages postés
207
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
21 août 2019
- 7 août 2019 à 00:56
Bonjour,
je retrouve le shell après bien des années d'absence et je suis confonté à un problème.
Voilà je dispose du fichier.txt suivant:

#?COMMENCEMENT
s_prenom='ALBERT'
s_nom='DUPOND'
s_sexe='masculin'
s_aptitude=''
s_definition='Habitant de France'
s_groupe='HOMME'
s_pseudo=''
s_langue=''
s_etranger='N'
s_address='11.rue.Temple/7700'
s_unformation=''
s-profession='sans'
#?FIN
#?COMMENCEMENT
s_prenom='FRED'
s_nom='BACHELARD'
s_sexe='masculin'
s_aptitude=''
s_definition='Habitant de France'
s_groupe='HOMME'
s_pseudo=''
s_langue=''
s_etranger='N'
s_address='25.rue.Baltot/78114'
s_unformation=''
s-profession='sans'
#?FIN
etc...


Comme vous pouvez le constater, ce fichier est constitué des balises suivantes:
#?COMMENCEMENT
#?FIN


Mon but est de découpé le fichier autant de fois qu'il y a de balises afin d'obtenir plusieurs fichier.nn.txt (nn = numéro de fichier) avec le contenu suivant:
#?COMMENCEMENT 
s_prenom='ALBERT'
s_nom='DUPOND'
s_sexe='masculin'
s_aptitude=''
s_definition='Habitant de France'
s_groupe='HOMME'
s_pseudo=''
s_langue=''
s_etranger='N'
s_address='11.rue.Temple/7700'
s_unformation=''
s-profession='sans'
#?FIN


J'ai essayé plein de choses avec awk, mais je n'obtiens pas de résultat satisfaisant...
Pourriez-vous svp m'apporter votre aide ?
Merci à vous ! :-)
Ka-El
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
17797
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 août 2019
4424
1
Merci
hello
awk -v n=1 '{print > "fichier." sprintf("%02d", n)  ".txt"} /#?FIN/ {n++}' fichier.txt

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 59145 internautes nous ont dit merci ce mois-ci

Ka-El
Messages postés
195
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
8 août 2019
-
Salut Dubcek,
Superbe ! :-)
Je suis à chaque fois épaté....
En tout cas, merci beaucoup pour ton aide ;-)
Ka-El
lEprofSonDkon
Messages postés
207
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
21 août 2019
11 -
awk ' /#?COMMENCEMENT/{++n}{print > "fichier." sprintf("%02d", n) ".txt"}' fichier.txt

oui, oui, c'est du plagiat.
XD
Ka-El
Messages postés
195
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
8 août 2019
-
Merci lEprofSonDkon :-)
D'ailleurs comme je vois que vous êtes en forme, vous sauriez faire la même chose, mais cette fois-ci en batch ? :-)
lEprofSonDkon
Messages postés
207
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
21 août 2019
11 > Ka-El
Messages postés
195
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
8 août 2019
-
en batch, sur W$ ? non.

en bash, ce n'est pas compliqué (l'algo est le même) :
une boucle
while
pour lire le fichier ligne par ligne
un simple test pour évaluer si la ligne correspond à l'expression recherchée pour alors incrémenter la variable numérique
et une redirection de la ligne lue dans le fichier souhaité

rien de compliqué.
Commenter la réponse de dubcek