Découper un fichier.txt en plusieurs partie

Résolu
Ka-El Messages postés 279 Statut Membre -  
lEprofSonDkon Messages postés 227 Statut Membre -
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
A voir également:

1 réponse

dubcek Messages postés 19021 Statut Contributeur 5 637
 
hello
awk -v n=1 '{print > "fichier." sprintf("%02d", n)  ".txt"} /#?FIN/ {n++}' fichier.txt
1
Ka-El Messages postés 279 Statut Membre
 
Salut Dubcek,
Superbe ! :-)
Je suis à chaque fois épaté....
En tout cas, merci beaucoup pour ton aide ;-)
Ka-El
0
lEprofSonDkon Messages postés 227 Statut Membre 13
 
awk ' /#?COMMENCEMENT/{++n}{print > "fichier." sprintf("%02d", n) ".txt"}' fichier.txt

oui, oui, c'est du plagiat.
XD
0
Ka-El Messages postés 279 Statut Membre
 
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 ? :-)
0
lEprofSonDkon Messages postés 227 Statut Membre 13 > Ka-El Messages postés 279 Statut Membre
 
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é.
0