Croisement de deux fichiers
Utilisateur anonyme
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à toutes et à tous ,
J'ai deux fichiers : fichier_total et fichier_partie . les deux fichiers contiennent :
fichier_partie (format TXT):
- un "idinfo" (qui se decompose de 7 chiffres) de 6000 paragraphes
fichier_total (format XML):
- un "idinfo" (qui se decompose de 7 chiffres) de 45000 paragraphes (y compris les 6000)
- une date
et en fait, je veux extraire de mon fichier_total les dates et les idinfos des 6000 données seulement (et non des 450000). et comme les données dans fichier_total ne sont pas organisés , c'est impossible de trouver mes 6000 idinfos dans les 45000, alors ce que je veux faire cest de croiser tous mes 6000 idinfos qui se trouve dans le fichier_partie avec les 45000 idinfos dans fichier_total afin de les extraire avec leurs dates.
j'espere bien etre claire !!! et trouver de l'aide aussi !! merci
J'ai deux fichiers : fichier_total et fichier_partie . les deux fichiers contiennent :
fichier_partie (format TXT):
- un "idinfo" (qui se decompose de 7 chiffres) de 6000 paragraphes
fichier_total (format XML):
- un "idinfo" (qui se decompose de 7 chiffres) de 45000 paragraphes (y compris les 6000)
- une date
et en fait, je veux extraire de mon fichier_total les dates et les idinfos des 6000 données seulement (et non des 450000). et comme les données dans fichier_total ne sont pas organisés , c'est impossible de trouver mes 6000 idinfos dans les 45000, alors ce que je veux faire cest de croiser tous mes 6000 idinfos qui se trouve dans le fichier_partie avec les 45000 idinfos dans fichier_total afin de les extraire avec leurs dates.
j'espere bien etre claire !!! et trouver de l'aide aussi !! merci
A voir également:
- Croisement de deux fichiers
- Nombre de jours entre deux dates excel - Guide
- Explorateur de fichiers - Guide
- Deux ecran pc - Guide
- Renommer des fichiers en masse - Guide
- Comment faire deux colonnes sur word - Guide
5 réponses
Salut,
Merci d'afficher quelques lignes des deux fichiers avec un exemple concret de ce que tu veux récupérer...
Merci d'afficher quelques lignes des deux fichiers avec un exemple concret de ce que tu veux récupérer...
Et tu veux récupérer tout le bloc (entre "<FICHE>" et "</FICHE>") ou seulement l'IDINFO et la DATE ?
rebonjour,
A la fin je veux récuperer que le idinfo et la date mais sa c'est tres simple à faire une fois j'ai mon fichier avec les avis d'attribution de <FICHE> à </FICHE>. donc je veux de <FICHE> à </FICHE>, si c'est possible (c'est ce que je n'ai pas réussi à faire ) , aprés je pense c'est facile pour extraire l'idinfo et les dates (avec un sed).
A la fin je veux récuperer que le idinfo et la date mais sa c'est tres simple à faire une fois j'ai mon fichier avec les avis d'attribution de <FICHE> à </FICHE>. donc je veux de <FICHE> à </FICHE>, si c'est possible (c'est ce que je n'ai pas réussi à faire ) , aprés je pense c'est facile pour extraire l'idinfo et les dates (avec un sed).
[rep]$ cat fichier_total <FICHE> <IDINFO>6372655</IDINFO> <NOANNONCE>14</NOANNONCE> <IDORIGINE>6215365</IDORIGINE> <OBJET>MARCHE 2007-031 FOURNITURES DE LOTS DE SAUVETAGE ET DE PROTECTION CONTRE LES CHUTES</OBJET> <REFMARCHE NULL="TRUE"/> <CP>03000</CP> <ORGA>SDIS 03, 8 RUE DE REFEMBRE B.P. 1677 03000 MOULINS</ORGA> <CONTACT>M. le president du CASDIS 03</CONTACT> <ROLECONTACT> PRM </CONTACTORGA> <DATEENVOIPUBLI NULL="TRUE"/> <DATEPUBLI>04/01/2008</DATEPUBLI> <NOPARUTION>C001</NOPARUTION> <LIEUEXE>ALLIER</LIEUEXE> <DATELIMITEC NULL="TRUE"/> </FICHE> <FICHE> <IDINFO>5313686</IDINFO> <NOANNONCE>64</NOANNONCE> <IDORIGINE>6212865</IDORIGINE> <OBJET>REALISATION 1456 LOGEMENT</OBJET> <REFMARCHE NULL="TRUE"/> <CP>17000</CP> <ORGA>EIFFAGE, 14 RUE ALEXANDRE DUMAS 17000 LA ROCHELLE</ORGA> <CONTACT>M. le president du EIFFAGE</CONTACT> <ROLECONTACT> PRM </CONTACTORGA> <DATEENVOIPUBLI NULL="TRUE"/> <DATEPUBLI>14/02/2008</DATEPUBLI> <NOPARUTION>C001</NOPARUTION> <LIEUEXE>ALLIER</LIEUEXE> <DATELIMITEC NULL="TRUE"/> </FICHE> <FICHE> <IDINFO>7294582</IDINFO> <NOANNONCE>25</NOANNONCE> <IDORIGINE>6224565</IDORIGINE> <OBJET>REALISATION 1456 LOGEMENT</OBJET> <REFMARCHE NULL="TRUE"/> <CP>44000</CP> <ORGA>ETF, 29 RUE DUMAS 44000 NANTES</ORGA> <CONTACT>M. le president du ETF</CONTACT> <ROLECONTACT> PRM </CONTACTORGA> <DATEENVOIPUBLI NULL="TRUE"/> <DATEPUBLI>25/02/2008</DATEPUBLI> <NOPARUTION>C001</NOPARUTION> <LIEUEXE>ALLIER</LIEUEXE> <DATELIMITEC NULL="TRUE"/> </FICHE> [rep]$ cat fichier_partie nombre d'offres recues : 03 * cta (mandataire)/3t * stplm, entreprise couta * tropic transport, v.5) le marche est susceptible d'etre sous-traite : idinfo(6372655) md5(md5:8c6a65112446e6fa31a4975645a7f4e9) v.1) nombre d'offres recues : 02 * cta (mandataire)/3t. * stplm, entreprise couta., v.5) le marche est susceptible d'etre sous-traite : idinfo(5313689) md5(md5:fc593e659ed786dbdc95fa7d95779d70) v.2) nombre d'offres recues : 02 * cta(mandataire)/3t *stplm, entreprise couta, v.5) le marche est susceptible d'etre sous-traite : idinfo(7294582) md5(md5:8e8a73edba8575504ba34e632e10f577) [rep]$ cat bar.sh #! /bin/sh #set -xv sed -n 's/.*idinfo(\([^)]*\)).*/\1/p' fichier_partie | while read line do sed -n '\#<FICHE>#,\#</FICHE>#{ /IDINFO>'"$line"'</{ h :z n \#</DATEPUBLI>#! bz H g p } }' fichier_total done [rep]$ ./bar.sh <IDINFO>6372655</IDINFO> <DATEPUBLI>04/01/2008</DATEPUBLI> <NOPARUTION>C001</NOPARUTION> <IDINFO>7294582</IDINFO> <DATEPUBLI>25/02/2008</DATEPUBLI> <NOPARUTION>C001</NOPARUTION> [rep]$;-))
Modifie le script comme ça :
[rep]$ cat bar.sh #! /bin/sh #set -xv sed -n 's/.*idinfo(\([^)]*\)).*/\1/p' fichier_partie | while read line do sed -n '\#<FICHE>#,\#</FICHE>#{ /IDINFO>'"$line"'</{ h :z n \#</DATEPUBLI>#! bz H g s/<[^>]*>//g s/ .*// s/\n/ / p } }' fichier_total done [rep]$ ./bar.sh 6372655 04/01/2008 7294582 25/02/2008 [rep]$
rebonjour,
je vous remercie beaucoup pour vos explications. sa va m'aider. j'ai même imprimer un document de 60 pages sur la cmd sed que je vais lire ce weekend.
1) pour répondre à vos questions , je n'ai pas essayé de travailler en local car je n'ai pas linux sur mon PC (je travaille generalement sur windows), je travaille sous linux sur un serveur OVH. Donc , je vais peut etre demander à mon collaborateur , lui ne travaille que sous linux.
2) pour les données, effectivements j'ai beaucoup de lignes qui fait que le traitement prend du temps :
fichier_partie : 13.463 lignes
fichier_total: 9.923.665 lignes
3) pour le systeme ; comme je disais, je travaille sous windows (XP et vista) et j'accede au serveur via Putty. on m'a conseillé d'installer linux ou juste un double boot sur mon PC mais j'esitais (probleme d'espace de disque dur sur mon PC, surtout que j'ai vista !!!).
4) Quelle version de "sed"??? par contre , là je n'ai pas compris!!
Bien cordialement.
je vous remercie beaucoup pour vos explications. sa va m'aider. j'ai même imprimer un document de 60 pages sur la cmd sed que je vais lire ce weekend.
1) pour répondre à vos questions , je n'ai pas essayé de travailler en local car je n'ai pas linux sur mon PC (je travaille generalement sur windows), je travaille sous linux sur un serveur OVH. Donc , je vais peut etre demander à mon collaborateur , lui ne travaille que sous linux.
2) pour les données, effectivements j'ai beaucoup de lignes qui fait que le traitement prend du temps :
fichier_partie : 13.463 lignes
fichier_total: 9.923.665 lignes
3) pour le systeme ; comme je disais, je travaille sous windows (XP et vista) et j'accede au serveur via Putty. on m'a conseillé d'installer linux ou juste un double boot sur mon PC mais j'esitais (probleme d'espace de disque dur sur mon PC, surtout que j'ai vista !!!).
4) Quelle version de "sed"??? par contre , là je n'ai pas compris!!
Bien cordialement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Concernant la version de sed :
je travaille sous linux sur un serveur OVH
Quelle version de Linux est installé sur ce serveur ?
Pour la doc sur sed :
Sed - Introduction à SED - Part I
Sed - Introduction à SED - Part II
Sed - Introduction à SED - Part III
$ sed --version GNU sed version 4.1.4En fonction de la version de sed (ça dépend souvent du système sur lequel on tourne), il y a certaines limitations, d'où ma demande.
je travaille sous linux sur un serveur OVH
Quelle version de Linux est installé sur ce serveur ?
Pour la doc sur sed :
Sed - Introduction à SED - Part I
Sed - Introduction à SED - Part II
Sed - Introduction à SED - Part III