Extraire les infos des entètes d'une série de

romaingeol -  
romaingeol Messages postés 1 Statut Membre -
Bonjour,

Voila, je dois créer une base de données regroupant les informations contenues dans les entètes de fichiers ASCII.
Mes fichiers sont classés dans des sous répertoires, j'aurais donc besoin d'un code qui parcourt les sous-dossiers et extrait les infos de chaque entète.

Les entètes se présentent sous formes de champs: date, localisation, distance etc.
Les entètes ont toutes le m^me format, plusieurs champs sont présents sur une m^me ligne.
Comment faire pour extraire la valeur (binaire ou chaine de caractère) faisant suite au champ "NOM", par exemple? mais sans déborder sur le champ suivant....

Je n'ai pas mis le nez dans les shells depuis bien longtemps mais je crois me souvenir que l'on peut faire ce genre de chose avec awk.


Ce serait super si quelqu'un me donnait un exemple de scipt permettant d'extraire deux ou trois champs des ent^tes d'une dizaine de fichiers répartis dans des sous répertoires.

Merci beaucoup
A voir également:

7 réponses

tenace Messages postés 840 Statut Membre 224
 
Bonsoir,
essaie le lien suivant, cela peut peut-être repondre à ta question .
Kev
http://www.commentcamarche.net/forum/affich 4661807 recup de donnees depuis un claseur excel?dernier#dernier
Récup de données depuis un claseur excel
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

T'aurais pas un modèle de fichier à nous afficher plutôt avec un exemple de ce que tu veux récupéer, ce serait beaucoup plus simple pour nous...
0
romaingeol
 
Voici un exemple d'entète, je voudrai extraire la date, la latitude, longitude etc...

===============================================================

---- EVENT
Source : Sismalp
Localisation :
Julian Date : 1989 6 - Time : 20: 51: 34
Latitude : 43.537 - Longitude : 5.234 - Depth : 0.0
Magnitude Local : 2.46
---- STATION :CBB - NETWORK :Sismalp
Latitude : 44.597 - Longitude : 6.855 - Elevation : 1990.0
Depth : 0.000 - Site : Near_sou - Sensor : WIL1
Distance to event : 175.3
Event to station azimuth : 47.23
Station to event azimuth : 228.36
---- RECORD
Julian Day : 6/1989
Time : 20:51:34.289
Sample rate : 0.02000 - Nb points : 2048
Componente : Z - Unit : c

===================================================================

Il s'agit de fichier ascii et non pas de classeurs excell

Merci
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Ok, mais il aurait fallu le format de sortie désiré aussi... et savoir si tu veux toutes les "Latitudes, Longitudes, etc." ou simplement certaines quand elles sont répétées plusieurs fois...

En attendant, voilà un exemple :
awk -F"-" '/Date/ { print $1 } ; /Latitude/ { printf " %s\n%s\n",$1,$2 }' fichier
Julian Date : 1989 6
 Latitude : 43.537
 Longitude : 5.234
 Latitude : 44.597
 Longitude : 6.855
A adapter ;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
romaingeol
 
Bon c déja pas mal

Je voudrais differencier les 2 Lat et Lon et créer un fichier texte en colonnes de type:

Date heure Lat Lon Depth Station Lat(station) Lon(station)


Faire une base de données quoi...

Peux tu me détailler la commande awk que tu m'as donné?
0
romaingeol
 
Avec la commande que tu m'as donné on extrait le champ en entier, est-il possible de ne garder que la valeur (eliminer "latitude par exemple")?

Merci
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
$ awk -F":" '/Date/ { print substr($2,2,7),$3":"$4":"$5 }' plop
1989 6   20: 51: 34

$ awk -F": " '/Latitude/ { print substr($2,1,6) }' plop
43.537
44.597
Par contre pour le reste tu devrais attendre que "dubcek" passe dans le coin, c'est lui le spécialiste avec "awk" (sans oublier le reste aussi ;-) ).

;-))
0
romaingeol Messages postés 1 Statut Membre
 
Voila J'ai écris un script "awk" qui me permet d'extraire les informations d'un fichier:

BEGIN {FS="- "};
{OFS=":"};
NR==1 {printf "%s:", FILENAME};
NR==33 {printf "%s:", $1};
NR==34 {printf "%s:", $1};
NR==35 {printf "%s:", $1};
NR==36 {printf "%s:", $1};
NR==24 {printf "%s:%s:%s :",$1,$2,$3};
/Magnitude/ {printf "%s :", $1};
NR==27 {printf "%s:%s:%s :",$1,$2,$3};
END {printf "\n"}

je le lance en faisant awk -f toto.awk input.asc > toto.txt



Comment faire maintenant pour que je scan tout les fichiers et les répertoire d'un répertoire donné?
0