Croisement de deux fichiers

Fermé
Utilisateur anonyme - 14 sept. 2009 à 15:49
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 15 sept. 2009 à 14:21
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
A voir également:

5 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
14 sept. 2009 à 16:06
Salut,

Merci d'afficher quelques lignes des deux fichiers avec un exemple concret de ce que tu veux récupérer...
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
14 sept. 2009 à 18:06
Et tu veux récupérer tout le bloc (entre "<FICHE>" et "</FICHE>") ou seulement l'IDINFO et la DATE ?
0
Utilisateur anonyme
14 sept. 2009 à 18:47
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).
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
14 sept. 2009 à 19:04
[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]$  
;-))
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
14 sept. 2009 à 19:14
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]$
0
Utilisateur anonyme
15 sept. 2009 à 13:40
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.
0

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

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
15 sept. 2009 à 14:21
Concernant la version de sed :
$ sed --version
GNU sed version 4.1.4
En 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
0