Menu

Codage unix traitement tableaux et mise à jour automatique [Résolu/Fermé]

Messages postés
48
Date d'inscription
mercredi 11 juin 2014
Statut
Membre
Dernière intervention
25 août 2014
- - Dernière réponse :  wtfunix - 30 juin 2014 à 13:01
Bonjour, voila j'ai quelque chose à faire en unix et malheureusement je ne m'y connais pas beaucoup dans ce domaine. Dans l'espoir d'avoir un peu d'aide de votre part je me permets de vous décrire les tâches que j'ai à effectuer.

Alors il y a 2 sites: http://neo.jpl.nasa.gov/ca et http://www.minorplanetcenter.net/i [...] seapp.html ces deux sites ont des tableaux il faut que je prenne les informations de ces tableaux, ça j ai trouver c est : curl http://neo.jpl.nasa.gov/ca > jpl_tableau.txt que j ai mis dans un fichier txt et l autre c est : curl http://www.minorplanetcenter.net/i [...] seapp.html > mpl_tableau.txt que j ai mis dans un fichier mpl_tableau txt.
Ça c est la première étape ensuite il faut filtrer ces 2 fichiers car nous on veut les distances inférieures à 0,05 UA pendant un temps t1 a t2
définie préalablement et on stockera ces informations dans un fichier.Donc il y a deux parties définir le temps t1 à t2 qui sera fixé par l'utilisateur et ne prendre que les distances inférieures à 0.05 UA

Le fichier aura donc les 7 premières colonnes normalement du nom de l'astéroîdes jusqu'à sa distance par rapoort à la terre ( < 0.05) .

Ensuite on compare les résultats des deux tableaux entre eux afin d'éliminer les données qui se répètent entre les 2 tableaux , on élimine les résultats semblables et on crée un fichier les répertoriant avec le nom de l astéroïde la date et la distance (qui sera inférieur a
0,05ua). On stockera ces résultats finaux dans un fichier.


Pour le site web
http://www.minorplanetcenter.net/i [...] seApp.html le code que
j'ai fait c'est :

$ curl http://www.minorplanetcenter.net/i [...] seApp.html >mpl-tableau.txt
$ grep "opposition" mpl-tableau.txt > mpl-tableaumodif.txt
$ cat mpl-tableaumodif.txt | cut -c 10-68 > mpl-sel.txt
$ cat mpl-sel.txt | awk '{ if ( $7 <= 0.05 ) '{print $1,$2,$3,$4,$5,$6,$7}' | column -t }' > fip.txt
$ cat fip.txt | awk '{ if ( $7 <= 0.05 ) print $1" "$2" "$3" "$4" "$5" "$6" "$7}' > d.txt
$ cat d.txt |awk '{print $1,$2,$3,$4,$5,$6,$7}'|column >dernierecolonnebonne.txt
$ cat mpl-tableaumodif.txt | cut -c58-68 > distance.txt
$ cat distance.txt | awk '{ if ( $1 <= 0.05 ) print $1}' > colonne rangée



Après avoir réussi à récupérer le tableau avec les cases qui nous interessaient, j'ai décidé de créer un fichier avec les distances inférieures à 0.05. J'ai donc réussi à prendre la dernière colonne. Cependant, maintenant il me reste à le comparer avec le tableau entier afin de dire: "Si la distance existe dans la ligne alors on affiche la ligne du tableau d'origine ( avec le nom de l'astéroïdes, la date..etc )". Malheureusement, je n'ai pas encore trouvé de solutions. Je ne sais pas si c'est la bonne logique.

et pour l'autre site http://neo.jpl.nasa.gov/ca j'ai écris deux lignes :

$ curl http://neo.jpl.nasa.gov/ca | > jpl-tableau.txt
$grep " td nowrad align= " jpl-tableau.txt > donnee.txt

Si quelqu'un se sent de m'aider un peu ça serait parfait.

Merci d'avance
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
36530
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
24 mai 2019
3550
1
Merci
Re-

Bon dis-moi si concernant le 1er tableau (http://neo.jpl.nasa.gov/ca/), ceci conviendrait :

$ curl -s http://neo.jpl.nasa.gov/ca/ | w3m -dump -no-graph -T text/html | awk -F'|' '$3 ~ /\([0-9]/ && $5 <= 0.05 { print $3,$4,$5 }'
(2014 KA91) 2014-Jun-06 0.0235
(2014 HQ124) 2014-Jun-08 0.0084
(2014 KC46) 2014-Jun-08 0.0290
154275 (2002 SR41) 2014-Jun-09 0.0419
(2014 HS184) 2014-Jun-11 0.0464
(2014 KL22) 2014-Jun-11 0.0341
(2014 KS40) 2014-Jun-12 0.0491
(2014 HN178) 2014-Jun-16 0.0445
(2013 AG69) 2014-Jul-11 0.0394
(2011 PU1) 2014-Jul-18 0.0196
(2010 LE15) 2014-Aug-12 0.0399
(2013 WT67) 2014-Aug-17 0.0412
163132 (2002 CU11) 2014-Aug-30 0.0347

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 39121 internautes nous ont dit merci ce mois-ci

Utilisateur anonyme -
salut,

curl
ne semble pas utile :
w3m
récupère les données aussi (c'est la moindre des choses pour un navigateur internet ;) )
zipe31
Messages postés
36530
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
24 mai 2019
3550 -
Salut,

Exact ;-[

Merci bien ;-))

Je fais toujours la même erreur, à savoir que je commence par récupérer la page (enfin le code source) avec cURL et à le parser, puis quand j'ai besoin de l'affichage formaté, je ne cherche pas à comprendre et je rajoute un pipe ;-\
wtfunix
Messages postés
48
Date d'inscription
mercredi 11 juin 2014
Statut
Membre
Dernière intervention
25 août 2014
-
Sauriez- vous comment faire pour comparer les deux fichiers et supprimer les données semblables afin de récupérer toutes ses données dans un fichier final ?
Messages postés
36530
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
24 mai 2019
3550
0
Merci
Salut,

Ton second lien est tronqué ;-(
Peux-tu le modifier s'il te plaît.
Messages postés
48
Date d'inscription
mercredi 11 juin 2014
Statut
Membre
Dernière intervention
25 août 2014
0
Merci
http://www.minorplanetcenter.net/iau/lists/CloseApp.html =) Merci de ton attention !!
Messages postés
36530
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
24 mai 2019
3550
0
Merci
Ok merci. Par contre tes explications ne sont pas très claires (du moins en ce qui me concerne) ;-\

Pourrais-tu nous donner un exemple concret de valeurs contenues dans chaque tableau et que tu voudrais voir dans le fichier final.
De même, concernant les périodes, as-tu un exemple ?
Messages postés
48
Date d'inscription
mercredi 11 juin 2014
Statut
Membre
Dernière intervention
25 août 2014
0
Merci
Premier tableau : http://neo.jpl.nasa.gov/ca/

Object Name Close ApproachDate CADistance*(AU) CADistance*(LD)
(2014 KA91) 2014-Jun-06 0.0235 9.2
EstimatedDiameter** H(mag) RelativeVelocity(km/s)
21 m - 46 m 25.5 8.45

Nous avons cette ligne, moi je dois prendre la colonne ACdsitance(AU) et ne prendre que les valeur inférieures à 0.05. Ensuite pour toutes le valeurs inférieures à 0.05 je dois afficher la ligne de object name à CADistance (AU).
Messages postés
48
Date d'inscription
mercredi 11 juin 2014
Statut
Membre
Dernière intervention
25 août 2014
0
Merci
Pour le deuxième tableau : http://www.minorplanetcenter.net/iau/lists/CloseApp.html

Object (and name) Date of encounter (TT) Distance Orbit arc
2014 AF5 2456659.17 2014 Jan. 1.67 0.0006953 1-opposition, arc = 1 days

Reference Object (and name)
E2014-A21 2014 AF5

Nous avons cette ligne, moi je dois prendre la colonne Distance et ne prendre que les valeur inférieures à 0.05. Ensuite pour toutes le valeurs inférieures à 0.05 je dois afficher la ligne de "object name" à "Distance".


Concernant les périodes je ne sais pas du tout comment le définir on m'as demandé que pendant un laps de temps de t1 à t2 ,que l'utilisateur va définir,d'afficher le nom de la ligne correspondante à ces dates. A mon avis, t1 et t2 devront s'écrire sous forme : "année moi jour" pour ainsi être repérer dans le tableau et pouvoir en sortir la ligne correspondante.



Je ne sais pas si j'ai été très claire ce n'est pas facile à expliquer :/ merci encore de ton attention et de ton aide!!
Messages postés
48
Date d'inscription
mercredi 11 juin 2014
Statut
Membre
Dernière intervention
25 août 2014
0
Merci
Moi quand je le mets dans mon programme il me marque :


$ curl -s http://neo.jpl.nasa.gov/ca/ | w3m -dump -no-graph -T text/html | awk -F'|' '$3 ~ /\([0-9]/ && $5 <= 0.05 { print $3,$4,$5 }'
bash: w3m : commande introuvable

Sinon le tableau est bon j'avais déjà reussi à la trouver mais bon c'est sur en plus de lignes que toi =) !!
zipe31
Messages postés
36530
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
24 mai 2019
3550 -
awk -F'|' '$3 <= 0.05 { print $1,$2,$3,$4,$5,$6}'
La partie en gras est inutile et mauvaise là. Le
-F '|'
signifie que tu spécifies le pipe comme séparateur de champs, ce qui était vrai dans ton 1er cas, mais pas ici, car c'est l'espace qui sépare chaque champ, et comme c'est le séparateur par défaut pour la commande awk, inutile de le préciser.

Tout si tu veux récupérer la ligne entière, un simple
awk  '$3 <= 0.05 { print }'
suffit ;-)
ah d'accord oui j'ai compris merci beaucoup =)!! j'ai pu afficher les colonnes que je voulais merci encore! !!
Bonjour,
j'aimerai savoir si vous sauriez comment faire afin de sélectionner un période de temps dans le script et pour que le script pose la question de la période à choisir (debut et fin), l'utilisateur écrira lui même sont temps du début et de fin directement au clavier? Mon problème est que je dois trouver la maniere dans le script de tester les tables pour ne considérer qure les lignes comprises entre ces deux dates. Je sais que à un moment je vais devoir exécuter le programme avec la commande " crontab" pour l'avoir de manière automatique, mais si je veux sélectionner par exemple les 15 premiers jours du mois de juin 2014 par exemple comment pourrais-je faire ? serait- ce avec la commande e-grep?

cordialement .
zipe31
Messages postés
36530
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
24 mai 2019
3550 -
si je veux sélectionner par exemple les 15 premiers jours du mois de juin 2014 par exemple comment pourrais-je faire ?
Un truc comme ça devrait le faire :

awk  '$2 ~ /2014-Jun-(0[1-9]|1[0-5])/ && $3 <= 0.05 { print }'
oui celui ci marche =) mais je cherche plus à faire un programme qui demande à l'utilisateur de rentrer lui même les dates voulues et ainsi ne faire apparaître que les lignes concernées dans le script . Il me semble que c'est un programme à faire à part je pense ?
Messages postés
36530
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
24 mai 2019
3550
0
Merci
Sinon, pour le 2nd, est-ce que cette commande ferait l'affaire :

curl -s http://www.minorplanetcenter.net/iau/lists/CloseApp.html | awk '/1-opposition,/ && $7 <= 0.05 { print $1,$2,$3,$4,$5,$6,$7 }' 

wtfunix
Messages postés
48
Date d'inscription
mercredi 11 juin 2014
Statut
Membre
Dernière intervention
25 août 2014
-
oui c'est parfait tu a réussi à le faire en une ligne ahaha merci beaucoup =)
wtfunix
Messages postés
48
Date d'inscription
mercredi 11 juin 2014
Statut
Membre
Dernière intervention
25 août 2014
-
Comment pourrais-je faire pour dire au programme de ne me donner que les lignes correspondantes à deux dates que je défini moi même?

Par exemple : t1 =2014 Janv. ( sur le site les dates sont écrites de cette forme)
t2 = 2014 Mars.
et la le programme va me sortir que les lignes comprises entre janvier et Mars 2014
Messages postés
48
Date d'inscription
mercredi 11 juin 2014
Statut
Membre
Dernière intervention
25 août 2014
0
Merci
Bonjour,

Sauriez- vous comment faire pour comparer les deux fichiers et de supprimer les données semblables afin de récuperer toutes ses données dans un fichier final ?

J'ai trouver sur internet qu'il faudrait utiliser la commande diff?



Merci d'avance =)
wtfunix
Messages postés
48
Date d'inscription
mercredi 11 juin 2014
Statut
Membre
Dernière intervention
25 août 2014
-
ben oui bien sur que ça serait bon je dirai même plus que c'est parfait !!! Merci encore de l'aide incroyable que tu m'as donné !!!!!
Utilisateur anonyme -
de l'aide ?
moi, je dirais d'avoir fait tout le boulot !
et chapeau bas !!!
wtfunix
Messages postés
48
Date d'inscription
mercredi 11 juin 2014
Statut
Membre
Dernière intervention
25 août 2014
-
oui aussi !!! xd
zipe31
Messages postés
36530
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
24 mai 2019
3550 -
Disons que comme il n'est pas arrivé les mains vides (voir son post initial) et qu'il avait quand même essayé de s'en sortir, j'ai juste un peu amélioré son script... ce n'est pas comme tous ceux qui se pointent sans rien (suivez mon regard ;-\).

En attendant, s'ils embauchent dans ta boîte, merci de penser à moi ;-))
wtfunix
Messages postés
48
Date d'inscription
mercredi 11 juin 2014
Statut
Membre
Dernière intervention
25 août 2014
-
alors la pas de soucis je leur en parlerai !! tu leur sera très utile =)