Aide pour extraction de bloc d'information dans fichier.txt

Résolu/Fermé
mrcorben Messages postés 3 Date d'inscription vendredi 18 janvier 2013 Statut Membre Dernière intervention 18 janvier 2013 - Modifié par mrcorben le 18/01/2013 à 15:02
mrcorben Messages postés 3 Date d'inscription vendredi 18 janvier 2013 Statut Membre Dernière intervention 18 janvier 2013 - 18 janv. 2013 à 16:44
Bonjour, a tous
Je sollicite vos connaissances pour l'aider un peu
En effet je souhaite extraire des données d'un fichier txt qui contient plusieurs fois (des centaines) des blocs d'informations que je souhaiterais écrire dans des fichiers séparés.
En gros un fichiers avec

ATOM 1 O5' G A 1 37.527 1.185 -19.786 1.00 4.72 O
ATOM 2 C5' G A 1 37.612 0.981 -21.200 1.00 4.96 C
ATOM 3 C4' G A 1 36.271 0.546 -21.784 1.00 4.98 C
ATOM 4 O4' G A 1 35.867 -0.685 -21.171 1.00 5.00 O
ATOM 5 C3' G A 1 35.115 1.493 -21.509 1.00 4.71 C
ATOM 6 O3' G A 1 35.030 2.400 -22.612 1.00 4.80 O
etc....
END (fin du bloc 1)
(......plusieurs copies avec la même syntaxte....)
ATOM 28 H8 G A 1 35.352 0.913 -18.715 1.00 4.35 H
ATOM 29 H1 G A 1 31.334 -3.632 -16.614 1.00 4.64 H
ATOM 30 H21 G A 1 30.633 -4.866 -18.318 1.00 5.01 H
ATOM 31 H22 G A 1 31.173 -4.575 -19.957 1.00 5.17 H
ATOM 32 P G A 2 34.706 3.961 -22.369 1.00 4.61 P
END (fin du bloc2)
etc....

le fichier est donc en "vrai" comme ça (ici seulement un repeat de 2)
ATOM 1 O5' G A 1 37.527 1.185 -19.786 1.00 4.72 O
ATOM 2 C5' G A 1 37.612 0.981 -21.200 1.00 4.96 C
ATOM 3 C4' G A 1 36.271 0.546 -21.784 1.00 4.98 C
ATOM 4 O4' G A 1 35.867 -0.685 -21.171 1.00 5.00 O
ATOM 5 C3' G A 1 35.115 1.493 -21.509 1.00 4.71 C
ATOM 6 O3' G A 1 35.030 2.400 -22.612 1.00 4.80 O
END
ATOM 28 H8 G A 1 35.352 0.913 -18.715 1.00 4.35 H
ATOM 29 H1 G A 1 31.334 -3.632 -16.614 1.00 4.64 H
ATOM 30 H21 G A 1 30.633 -4.866 -18.318 1.00 5.01 H
ATOM 31 H22 G A 1 31.173 -4.575 -19.957 1.00 5.17 H
ATOM 32 P G A 2 34.706 3.961 -22.369 1.00 4.61 P
END

Et je souhaite avoir si cela est possible des fichiers
Fichier 1
ATOM 1 O5' G A 1 37.527 1.185 -19.786 1.00 4.72 O
ATOM 2 C5' G A 1 37.612 0.981 -21.200 1.00 4.96 C
ATOM 3 C4' G A 1 36.271 0.546 -21.784 1.00 4.98 C
ATOM 4 O4' G A 1 35.867 -0.685 -21.171 1.00 5.00 O
ATOM 5 C3' G A 1 35.115 1.493 -21.509 1.00 4.71 C
ATOM 6 O3' G A 1 35.030 2.400 -22.612 1.00 4.80 O
END

Fichier 2
ATOM 28 H8 G A 1 35.352 0.913 -18.715 1.00 4.35 H
ATOM 29 H1 G A 1 31.334 -3.632 -16.614 1.00 4.64 H
ATOM 30 H21 G A 1 30.633 -4.866 -18.318 1.00 5.01 H
ATOM 31 H22 G A 1 31.173 -4.575 -19.957 1.00 5.17 H
ATOM 32 P G A 2 34.706 3.961 -22.369 1.00 4.61 P
END

Etc...
Soit générer des centaines de fichiers sans ordre précis mais avec à chaque fois un extrait du « gros » fichier


Merci de votre aide

Et bonne journée à tous


A voir également:

4 réponses

dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
Modifié par dubcek le 18/01/2013 à 16:02
hello
awk -v n=1 '{print > "fichier" n} /^END/ {n++}' fichier.txt
plus court
awk  '{print > "fichier" n+1} /^END/ {n++}' fichier.txt<
1
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
Modifié par dubcek le 18/01/2013 à 16:25
en respectant les espaces avant et après ' ?
essayer avec :
awk '{print > sprintf("fichier%d", n+1) } /END/ {n++}' fichier
1
mrcorben Messages postés 3 Date d'inscription vendredi 18 janvier 2013 Statut Membre Dernière intervention 18 janvier 2013
18 janv. 2013 à 16:04
Bonjour
merci pour la réponse très rapide

je viens d'essayer mais cela me donne

awk: illegal statement at source line 1

Je ne suis pas encore habitué au shell, désolé

Merci de votre aide
0
mrcorben Messages postés 3 Date d'inscription vendredi 18 janvier 2013 Statut Membre Dernière intervention 18 janvier 2013
18 janv. 2013 à 16:44
S U P E R

merci bcq
tout marche bien
très bonne soirée à vous

et bon week end
merci
0