Codage unix traitement tableaux et mise à jour automatique

Résolu/Fermé
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014 - 11 juin 2014 à 11:05
 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: https://cneos.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 https://cneos.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 https://cneos.jpl.nasa.gov/ca/ j'ai écris deux lignes :

$ curl https://cneos.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
A voir également:

9 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
11 juin 2014 à 13:58
Re-

Bon dis-moi si concernant le 1er tableau (https://cneos.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

1
Utilisateur anonyme
12 juin 2014 à 11:34
salut,

curl
ne semble pas utile :
w3m
récupère les données aussi (c'est la moindre des choses pour un navigateur internet ;) )
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
12 juin 2014 à 11:39
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 ;-\
0
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
12 juin 2014 à 11:42
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 ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
11 juin 2014 à 11:28
Salut,

Ton second lien est tronqué ;-(
Peux-tu le modifier s'il te plaît.
0
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
Modifié par wtfunix le 11/06/2014 à 11:36
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
11 juin 2014 à 12:00
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 ?
0

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

Posez votre question
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
11 juin 2014 à 13:18
Premier tableau : https://cneos.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).
0
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
11 juin 2014 à 13:26
Pour le deuxième tableau : https://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!!
0
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
11 juin 2014 à 14:07
Moi quand je le mets dans mon programme il me marque :


$ curl -s https://cneos.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 =) !!
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
11 juin 2014 à 14:09
Il te faut installer w3m.
0
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
11 juin 2014 à 14:12
d'accord je le fait dessuite !
0
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
11 juin 2014 à 14:30
Comment installes - tu w3m ? écar j'ai fais des recherches sur internet un site m'as dis de mettre : sudo apt-get install w3m w3m-img j'obtient:

$ sudo apt-get install w3m w3m-img
[sudo] password :
Sorry, try again.
[sudo] password :
a.h is not in the sudoers file. This incident will be reported.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
11 juin 2014 à 14:33
Sur quel système es-tu, ou quelle distribution ?
0
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
Modifié par wtfunix le 11/06/2014 à 14:39
je suis sur Unix fortran je crois
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
11 juin 2014 à 14:09
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 }' 

0
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
11 juin 2014 à 14:12
oui c'est parfait tu a réussi à le faire en une ligne ahaha merci beaucoup =)
0
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
Modifié par wtfunix le 11/06/2014 à 14:38
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
0
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
12 juin 2014 à 09:28
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 =)
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
12 juin 2014 à 11:54
Salut,

Les fichiers étant différents en sortie (formatage), sur quels critères doit se baser la comparaison ?

Sortie 1 :
2014 JV54 2456810.52 2014 June 2.02 0.031643
2014 JL25 2456813.81 2014 June 5.31 0.026178
2014 HQ124 2456816.76 2014 June 8.26 0.008349
2014 HS184 2456819.66 2014 June 11.16 0.046402
2014 HN178 2456824.78 2014 June 16.28 0.044206
2010 MY1 2456848.69 2014 July 10.19 0.04733
2013 AG69 2456848.81 2014 July 10.31 0.023478
2013 CM35 2456854.85 2014 July 16.35 0.047744
2011 PU1 2456855.92 2014 July 17.42 0.021194
2013 WT67 2456887.35 2014 Aug. 17.85 0.041245

Sortie 2 :
   (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
0
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
Modifié par wtfunix le 12/06/2014 à 12:38
alors justement c'est bien ça mon souci je pensais prendre le nom de l'astéroïdes, l'année et le mois pour la date et la distance pour comparer les fichiers car on s'aperçoit par exemple pour:

2014 HS184 on a pour la sortie 1 : 2014 HS184 2456819.66 2014 June 11.16 0.046402 et pour la sortie 2 : (2014 HS184) 2014-Jun-11 0.0464

Donc le nom et le début de la date ( année et moi ) et la distance ( à 0.0001 près) sont les mêmes ce qui fais que je ne vais pas avoir à l'afficher deux fois mais une seule fois.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
12 juin 2014 à 13:36
Bon, en partant de 2 fichiers (f1 et f2) créés comme suit :

$ curl -s http://www.minorplanetcenter.net/iau/lists/CloseApp.html | awk '/1-opposition,/ && $7 <= 0.05 && $4 ~ /2014/ && $5 ~ /(Jun*|July|Aug.)/ { print $1,$2,$4"-"$5,$7 }' > f1

$ w3m -dump -no-graph -T text/html http://neo.jpl.nasa.gov/ca/ | awk -F'|' '$3 ~ /\([0-9]/ && $5 <= 0.05 { print $3,$4,$5 }' | sed 's/.*(\|)//g;s/ \+/ /g' > f2

Et contenant respectivement ceci :

$ cat f1
2014 JV54 2014-June 0.031643
2014 JL25 2014-June 0.026178
2014 HQ124 2014-June 0.008349
2014 HS184 2014-June 0.046402
2014 HN178 2014-June 0.044206
2010 MY1 2014-July 0.04733
2013 AG69 2014-July 0.023478
2013 CM35 2014-July 0.047744
2011 PU1 2014-July 0.021194
2013 WT67 2014-Aug. 0.041245

$ cat f2
2014 KC46 2014-Jun-08 0.0290
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
2002 CU11 2014-Aug-30 0.0347
Et en appliquant le commande
sort
, j'obtiens ce résultat :
$ sort -u -k 1,1 -k 2,2 -k 3.1,3.8 -k 4.1,4.4 f1 f2
2002 CU11 2014-Aug-30 0.0347
2002 SR41 2014-Jun-09 0.0419
2010 LE15 2014-Aug-12 0.0399
2010 MY1 2014-July 0.04733
2011 PU1 2014-July 0.021194
2013 AG69 2014-July 0.023478
2013 CM35 2014-July 0.047744
2013 WT67 2014-Aug. 0.041245
2014 HN178 2014-June 0.044206
2014 HQ124 2014-June 0.008349
2014 HS184 2014-June 0.046402
2014 JL25 2014-June 0.026178
2014 JV54 2014-June 0.031643
2014 KC46 2014-Jun-08 0.0290
2014 KL22 2014-Jun-11 0.0341
2014 KS40 2014-Jun-12 0.0491

Ça serait bon ou pas ?
0
wtfunix Messages postés 48 Date d'inscription mercredi 11 juin 2014 Statut Membre Dernière intervention 25 août 2014
12 juin 2014 à 14:01
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é !!!!!
0
Utilisateur anonyme
12 juin 2014 à 16:50
de l'aide ?
moi, je dirais d'avoir fait tout le boulot !
et chapeau bas !!!
0