Découper un fichier.txt en plusieurs partie

Résolu/Fermé
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - 6 août 2019 à 15:36
lEprofSonDkon Messages postés 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 - 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
A voir également:

1 réponse

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 6 août 2019 à 18:32
hello
awk -v n=1 '{print > "fichier." sprintf("%02d", n)  ".txt"} /#?FIN/ {n++}' fichier.txt
1
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
6 août 2019 à 22:32
Salut Dubcek,
Superbe ! :-)
Je suis à chaque fois épaté....
En tout cas, merci beaucoup pour ton aide ;-)
Ka-El
0
lEprofSonDkon Messages postés 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 13
6 août 2019 à 22:53
awk ' /#?COMMENCEMENT/{++n}{print > "fichier." sprintf("%02d", n) ".txt"}' fichier.txt

oui, oui, c'est du plagiat.
XD
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
6 août 2019 à 23:25
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 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 13 > Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
7 août 2019 à 00:56
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