Script concaténation deux fichier
Résolu/Fermé
steph70
-
6 août 2009 à 08:43
steph70190 Messages postés 13 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 13 août 2009 - 11 août 2009 à 16:58
steph70190 Messages postés 13 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 13 août 2009 - 11 août 2009 à 16:58
A voir également:
- Script concaténation deux fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
- Comment réduire la taille d'un fichier - Guide
37 réponses
steph70190
Messages postés
13
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
13 août 2009
9 août 2009 à 14:37
9 août 2009 à 14:37
Bonjour asevere,
En fait, les données proviennent directement de deux fichiers csv exporté d'un unix et ensuite utilisés telles quelles par un soft nommé "MyReport".
Je ne suis pas contre l'utilisation de fichier temporaire.
Merci de ton aide
Je continue de chercher une solution.
Amicalement
Steph70
En fait, les données proviennent directement de deux fichiers csv exporté d'un unix et ensuite utilisés telles quelles par un soft nommé "MyReport".
Je ne suis pas contre l'utilisation de fichier temporaire.
Merci de ton aide
Je continue de chercher une solution.
Amicalement
Steph70
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
9 août 2009 à 14:40
9 août 2009 à 14:40
Salut,
Il peut avoir une seule correspondance ou plusieurs ?!
Il peut avoir une seule correspondance ou plusieurs ?!
steph70190
Messages postés
13
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
13 août 2009
9 août 2009 à 15:16
9 août 2009 à 15:16
Re,
quelques explications supplémentaires.
Jipyci à raison. Les lignes ne se correspondent pas d'un fichier à l'autre. Une des lignes peut se retrouver en face de n'importe quelle autre du second fichier du moment ou le code_art et la campagne correspondent.
Il y aura plusieurs correspondance car si les code_art sont uniques, il y a plusieurs campagnes.
je sais que c'est un peu compliqué alors je vais vous redonner un exemple.
Premier fichier ex :
ou le premier champs correspond à un code magasin (il y en a environ 80), le deuxième champs correspond au code article et le troisième champs qui indique la campagne.
Le deuxième fichier ex :
La les deux premiers champs sont les champs de jointure avec le premier fichier. Il faut savoir que les lignes ne sont pas en face de l'autre fichier en cas de paste. Il faut bien chercher sur les champs de jointure pour les assembler dans un troisième fichier et donc aussi éliminer les champs qui deviennent doublon comme le code_art et la campagne.
Et voici la maquette finale ex :
Merci encore pour votre patience et votre aide.
Amicalement
Steph70
quelques explications supplémentaires.
Jipyci à raison. Les lignes ne se correspondent pas d'un fichier à l'autre. Une des lignes peut se retrouver en face de n'importe quelle autre du second fichier du moment ou le code_art et la campagne correspondent.
Il y aura plusieurs correspondance car si les code_art sont uniques, il y a plusieurs campagnes.
je sais que c'est un peu compliqué alors je vais vous redonner un exemple.
Premier fichier ex :
mag code_art campagne st_juill st_aout st_sept st_oct st_nov st_dec st_janv st_fevr st_mars st_avril st_mai st_juin 206 176 2007 6.00 4.00 5.00 5.00 3.00 5.00 8.00 7.00 6.00 10.00 10.00 10.00 206 176 2008 10.00 6.00 5.00 3.00 9.00 9.00 6.00 7.00 7.00 5.00 8.00 7.00 206 176 2009 5.00 5.00 206 183 2007 6.00 6.00 4.00 7.00 6.00 6.00 8.00 4.00 8.00 6.00 5.00 6.00 206 183 2008 6.00 6.00 6.00 6.00 5.00 5.00 1.00 6.00 6.00 6.00 7.00 206 183 2009 8.00 8.00
ou le premier champs correspond à un code magasin (il y en a environ 80), le deuxième champs correspond au code article et le troisième champs qui indique la campagne.
Le deuxième fichier ex :
code_art campagne pmaar_juill pmaar_aout pmaar_sept pmaar_oct pmaar_nov pmaar_dec pmaar_janv pmaar_fevr pmaar_mars pmaar_avril pmaar_mai pmaar_juin pmasr_juill pmasr_aout pmasr_sept pmasr_oct pmasr_nov pmasr_dec pmasr_janv pmasr_fevr pmasr_mars pmasr_avril pmasr_mai pmasr_juin 176 2007 2.146 2.146 2.146 2.195 2.195 2.229 2.229 2.229 2.229 2.229 2.229 2.228 2.146 2.146 2.146 2.195 2.195 2.229 2.229 2.229 2.229 2.229 2.229 2.228 176 2008 2.267 2.267 2.267 2.267 2.267 2.267 2.276 2.276 2.276 2.276 2.276 2.276 2.267 2.267 2.267 2.267 2.267 2.267 2.276 2.276 2.276 2.276 2.276 2.276 176 2009 2.229 2.229 183 2007 3.538 3.658 3.658 3.704 3.704 3.574 3.574 3.574 3.574 3.574 3.574 3.574 3.538 3.658 3.658 3.704 3.704 3.574 3.574 3.574 3.574 3.574 3.574 3.574 183 2008 3.574 3.574 3.574 3.574 3.574 3.574 3.606 3.606 3.606 3.606 3.606 3.606 3.574 3.574 3.574 3.574 3.574 3.574 3.606 3.606 3.606 3.606 3.606 3.606 183 2009 3.574 3.574
La les deux premiers champs sont les champs de jointure avec le premier fichier. Il faut savoir que les lignes ne sont pas en face de l'autre fichier en cas de paste. Il faut bien chercher sur les champs de jointure pour les assembler dans un troisième fichier et donc aussi éliminer les champs qui deviennent doublon comme le code_art et la campagne.
Et voici la maquette finale ex :
mag;code_art;campagne;st_juill;st_aout;st_sept;st_oct;st_nov;st_dec;st_janv;st_fevr;st_mars;st_avril;st_mai;st_juin;pmaar_juill;pmaar_aout;pmaar_sept;pmaar_oct;pmaar_nov;pmaar_dec;pmaar_janv;pmaar_fevr;pmaar_mars;pmaar_avril;pmaar_mai;pmaar_juin;pmasr_juill;pmasr_aout;pmasr_sept;pmasr_oct;pmasr_nov;pmasr_dec;pmasr_janv;pmasr_fevr;pmasr_mars;pmasr_avril;pmasr_mai;pmasr_juin 206;00000176;2007;6.00;4.00;5.00;5.00;3.00;5.00;8.00;7.00;6.00;10.00;10.00;10.00;2.146;2.146;2.146;2.195;2.195;2.229;2.229;2.229;2.229;2.229;2.229;2.228;2.146;2.146;2.146;2.195;2.195;2.229;2.229;2.229;2.229;2.229;2.229;2.228 206;00000176;2008;10.00;6.00;5.00;3.00;9.00;9.00;6.00;7.00;7.00;;;;2.267;2.267;2.267;2.267;2.267;2.267;2.276;2.276;2.276;0;0;0;2.267;2.267;2.267;2.267;2.267;2.267;2.276;2.276;2.276;0;0;0 222;00061607;2007;;;;;2.00;2.00;2.00;2.00;2.00;2.00;2.00;2.00;8.48;8.475;8.476;8.477;8.479;8.479;8.479;8.479;8.479;8.479;8.479;8.479;8.48;8.475;8.476;8.477;8.479;8.479;8.479;8.479;8.479;8.479;8.479;8.479 222;00061607;2008;2.00;2.00;2.00;2.00;2.00;2.00;2.00;1.00;1.00;;;;8.479;8.479;8.479;8.479;8.479;8.479;8.479;8.479;8.479;0;0;0;8.479;8.479;8.479;8.479;8.47
Merci encore pour votre patience et votre aide.
Amicalement
Steph70
asevere
Messages postés
13095
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
426
9 août 2009 à 15:23
9 août 2009 à 15:23
Regardes ma réponse en 20...
PS: Attention, quand on parle de doulon, on parle en générale d'enregistrement (ligne) dupliqué, et non de champ dupliquer... cette précision, juste parceque ta phrase a ce propos m'a interpellée, le champ n'est pas dupliqué dans la réponse 20...
A plus
PS: Attention, quand on parle de doulon, on parle en générale d'enregistrement (ligne) dupliqué, et non de champ dupliquer... cette précision, juste parceque ta phrase a ce propos m'a interpellée, le champ n'est pas dupliqué dans la réponse 20...
A plus
steph70190
Messages postés
13
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
13 août 2009
9 août 2009 à 16:05
9 août 2009 à 16:05
Re et merci encore,
Vraiment, je vous dois une fière chandelle.
Reste un petit souci, lors du fichier final, j'ai une colonne blanche entre le premier fichier et le second dans le fichier final.
Comment faire pour l'enlever ?
En tout cas, merci encore, vous êtes géniaux.
Amicalement
Steph70
Vraiment, je vous dois une fière chandelle.
Reste un petit souci, lors du fichier final, j'ai une colonne blanche entre le premier fichier et le second dans le fichier final.
Comment faire pour l'enlever ?
En tout cas, merci encore, vous êtes géniaux.
Amicalement
Steph70
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
asevere
Messages postés
13095
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
426
9 août 2009 à 16:29
9 août 2009 à 16:29
De rien,
Pour la colone "blanche", à tout hasard, y a t'il des points-virgule après le dernier champ du fichier 1?
Dans ce cas remplace:
Ca aura pour effet de supprimer le délimiteur qui n'est pas un séparateur de champ, et donc de supprimer la colonne vide...
[ [:space:]] est a ecrire sans espace entre les deux premiers crochets
Pour la colone "blanche", à tout hasard, y a t'il des points-virgule après le dernier champ du fichier 1?
Dans ce cas remplace:
sed -r 's/^([^;]+);([^;]+);([^;]+);(.*)$/\1;\2@\3;\4/' fic1 |sort -n -t ';' -k 2 > fic1.modpar
sed -r -e 's/;[ [:space:]]*$//'-e 's/^([^;]+);([^;]+);([^;]+);(.*)$/\1;\2@\3;\4/' fic1 |sort -n -t ';' -k 2 > fic1.mod
Ca aura pour effet de supprimer le délimiteur qui n'est pas un séparateur de champ, et donc de supprimer la colonne vide...
[ [:space:]] est a ecrire sans espace entre les deux premiers crochets
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
9 août 2009 à 16:38
9 août 2009 à 16:38
[ [:space:]] est a ecrire sans espace entre les deux premiers crochets
Suffit de mettre une balise "ital" ou autre entre les deux et le tour est joué :
Suffit de mettre une balise "ital" ou autre entre les deux et le tour est joué :
sed -r -e 's/;[[:space:]]*$//'-e 's/^([^;]+);([^;]+);([^;]+);(.*)$/\1;\2@\3;\4/' fic1 |sort -n -t ';' -k 2 > fic1.mod;-))
asevere
Messages postés
13095
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
426
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
9 août 2009 à 16:44
9 août 2009 à 16:44
Ha oui!
Bien vu :)
A plus
Bien vu :)
A plus
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
>
asevere
Messages postés
13095
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
9 août 2009 à 16:48
9 août 2009 à 16:48
Elle n'est pas de moi, mais je sais plus qui qui me l'a dit ;-((
steph70190
Messages postés
13
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
13 août 2009
9 août 2009 à 17:19
9 août 2009 à 17:19
Ah désolé, la commande susdite me renvoie :
Amicalement
Steph70
sed: -e expression #1, char 20: unknown option to `s'
Amicalement
Steph70
asevere
Messages postés
13095
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
426
9 août 2009 à 17:21
9 août 2009 à 17:21
Hmmm...
Il doit manquer un espace avant le second -e
Il doit manquer un espace avant le second -e
steph70190
Messages postés
13
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
13 août 2009
9 août 2009 à 17:32
9 août 2009 à 17:32
C'etait bien cela.
Problème résolu.
Encore une fois merci encore.
Amicalement
Steph70
Problème résolu.
Encore une fois merci encore.
Amicalement
Steph70
steph70190
Messages postés
13
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
13 août 2009
10 août 2009 à 08:53
10 août 2009 à 08:53
Aie !!!
Je réouvre ce message car je viens de voir que j'ai un problème de taille.
Voila, le fichier 1 enumère en champs 1 plusieurs code magasin mais lorsque la concaténation est fini je constate que lorsqu'il y a déjà eu une concaténation sur un des magasin, le script ne reprend pas sur les autres magasins qui ont le même code_art et la même campagne.
Ce qui fait que je passe d'environ 400 000 lignes à un peu plus de 6 000.
Ex :
Voila un exemple sur le fichier 1
Mais sur le fichier concaténé, il n'apparait que la première ligne.
A l'aide svp.
Amicalement
Steph70
Je réouvre ce message car je viens de voir que j'ai un problème de taille.
Voila, le fichier 1 enumère en champs 1 plusieurs code magasin mais lorsque la concaténation est fini je constate que lorsqu'il y a déjà eu une concaténation sur un des magasin, le script ne reprend pas sur les autres magasins qui ont le même code_art et la même campagne.
Ce qui fait que je passe d'environ 400 000 lignes à un peu plus de 6 000.
Ex :
Voila un exemple sur le fichier 1
mag;code_art;campagne;st_juill;st_aout;st_sept;st_oct;st_nov;st_dec;st_janv;st_fevr;st_mars;st_avril;st_mai;st_juin; 206;00000176;2007;6.00;4.00;5.00;5.00;3.00;5.00;8.00;7.00;6.00;10.00;10.00;10.00; 212;00000176;2007;2.00;2.00;6.00;6.00;5.00;5.00;4.00;2.00;4.00;3.00;3.00;3.00;
Mais sur le fichier concaténé, il n'apparait que la première ligne.
A l'aide svp.
Amicalement
Steph70
asevere
Messages postés
13095
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
426
10 août 2009 à 09:16
10 août 2009 à 09:16
Hello,
Ca me laisse perplexe...
copie colle tout ça dans un script:
Exécute le, et copie colle le resultat...
Chez moi, (mais sous Mac), j'obtient bien 6 lignes (les 6 du premier fichier avec 4 lignes du second)
En gros, le problème sur les codes mag n'apparait pas... j'ai bien deux enregistrement pour l'article 106 pour la campagne 2007...
Ca me laisse perplexe...
copie colle tout ça dans un script:
#!/bin/bash cat > fic1 << EOF mag;code_art;campagne;st_juillet;st_aout;etc 201;106;2007;12;23;etc 201;206;2008;11;13;etc 301;106;2007;12;23;etc 301;206;2008;11;13;etc 113;206;2007;12;14;etc 112;208;2008;34;25;etc EOF cat > fic2 << EOF code_art;campagne;pma_juillet;pma_aout;etc 206;2007;112;118;etc 201;2008;115;120;etc 206;2008;175;195;etc 106;2007;340;152;etc 208;2008;32;12;etc EOF sed -r -e 's/;[ [:space:]]*$//' -e 's/^([^;]+);([^;]+);([^;]+);(.*)$/\1;\2@\3;\4/' fic1 |sort -n -t ';' -k 2 > fic1.mod sed -r 's/^([^;]+);([^;]+);(.*)$/\1@\2;\3/' fic2 |sort -n -t ';' -k 1 > fic2.mod join -1 2 -2 1 -t ';' fic1.mod fic2.mod | sed -r 's/^(.+)@([^;]+);([^;]+);(.*)$/\3;\1;\2;\4/'
Exécute le, et copie colle le resultat...
Chez moi, (mais sous Mac), j'obtient bien 6 lignes (les 6 du premier fichier avec 4 lignes du second)
En gros, le problème sur les codes mag n'apparait pas... j'ai bien deux enregistrement pour l'article 106 pour la campagne 2007...
steph70190
Messages postés
13
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
13 août 2009
10 août 2009 à 09:42
10 août 2009 à 09:42
Ben oui,
je constate qu'effectivement que lorsqu'on fait comme cela ca fonctionne.
Résultat :
La seule chose que je fais différente est les deux commandes de cat car je ne sais pas comment inclure 400 000 ligne dans ta commande.
Amicalement
Steph70
je constate qu'effectivement que lorsqu'on fait comme cela ca fonctionne.
Résultat :
mag;code_art;campagne;st_juillet;st_aout;etc;pma_juillet;pma_aout;etc 201;106;2007;12;23;etc;340;152;etc 301;106;2007;12;23;etc;340;152;etc 113;206;2007;12;14;etc;112;118;etc 201;206;2008;11;13;etc;175;195;etc 301;206;2008;11;13;etc;175;195;etc 112;208;2008;34;25;etc;32;12;etc
La seule chose que je fais différente est les deux commandes de cat car je ne sais pas comment inclure 400 000 ligne dans ta commande.
Amicalement
Steph70
asevere
Messages postés
13095
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
426
10 août 2009 à 10:00
10 août 2009 à 10:00
Pour les cat, ils ne sont là que pour l'exemple, et pour être sûr qu'on se base sur les même données pour tester...
Ton script à toi devrait commencer à la première commande sed...
Maintenant, j'ai peut-être un début de piste...
Que te donnent les commandes file, et wc -l sur tes fichiers ?
Je veux bien les résultat sur tes deux fichiers de départ, ainsi que sur les fichiers temporaires générés aux deux premiers sed
Ton script à toi devrait commencer à la première commande sed...
Maintenant, j'ai peut-être un début de piste...
Que te donnent les commandes file, et wc -l sur tes fichiers ?
$ file <fichier> $ wc -l <fichier>
Je veux bien les résultat sur tes deux fichiers de départ, ainsi que sur les fichiers temporaires générés aux deux premiers sed
steph70190
Messages postés
13
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
13 août 2009
10 août 2009 à 10:20
10 août 2009 à 10:20
Re et merci encore pour ton aide;
Alors voila :
pour le fichier1 original, le file donne
pour le fichier2 original, le file donne
Pour le fichier1 temporaire, le file donne
Pour le fichier2 temporaire, le file donne
Amicalement
Steph70
Alors voila :
pour le fichier1 original, le file donne
ASCII textle wc -l donne
445978
pour le fichier2 original, le file donne
ASCII textle wc -l donne
81554
Pour le fichier1 temporaire, le file donne
ASCII textle wc -l donne
445979
Pour le fichier2 temporaire, le file donne
ASCII textle wc -l donne
81554
Amicalement
Steph70
asevere
Messages postés
13095
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
426
10 août 2009 à 10:40
10 août 2009 à 10:40
Ok... plus de piste alors :-(
Tu donnais plus haut l'exemple de l'article 00000176
Peux tu me copier-coller le résultat du grep suivant sur l'ensemble des fichiers ? (fichier1, fichier2, fichier temporaire1, fichier temporaire2, fichier final)
Tu donnais plus haut l'exemple de l'article 00000176
Peux tu me copier-coller le résultat du grep suivant sur l'ensemble des fichiers ? (fichier1, fichier2, fichier temporaire1, fichier temporaire2, fichier final)
$ grep 00000176 <fichier>
steph70190
Messages postés
13
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
13 août 2009
10 août 2009 à 10:50
10 août 2009 à 10:50
Voici le resultat :
Fichier1 :
Fichier2 :
FichierTemporaire1 :
fichiertemporaire 2
Et le fichier final :
Amicalement
Steph70
[edit] A ce que je vois, a priori le souci est sur la commande join...
Fichier1 :
206;00000176;2007;6.00;4.00;5.00;5.00;3.00;5.00;8.00;7.00;6.00;10.00;10.00;10.00; 206;00000176;2008;10.00;6.00;5.00;3.00;9.00;9.00;6.00;7.00;7.00;5.00;8.00;7.00; 206;00000176;2009;5.00;5.00;;;;;;;;;;; 212;00000176;2007;2.00;2.00;6.00;6.00;5.00;5.00;4.00;2.00;4.00;3.00;3.00;3.00; 212;00000176;2008;3.00;2.00;4.00;4.00;3.00;3.00;3.00;3.00;1.00;2.00;1.00;3.00; 212;00000176;2009;3.00;3.00;;;;;;;;;;; 219;00000176;2007;9.00;11.00;10.00;7.00;15.00;15.00;15.00;14.00;14.00;12.00;18.00;12.00; 219;00000176;2008;11.00;10.00;10.00;9.00;9.00;9.00;9.00;9.00;13.00;11.00;11.00;8.00; 219;00000176;2009;7.00;7.00;;;;;;;;;;; 220;00000176;2007;7.00;4.00;2.00;7.00;7.00;7.00;7.00;6.00;5.00;2.00;2.00;2.00; 220;00000176;2008;8.00;8.00;7.00;7.00;7.00;7.00;6.00;5.00;9.00;9.00;6.00;6.00; 220;00000176;2009;6.00;6.00;;;;;;;;;;; 222;00000176;2007;6.00;6.00;5.00;5.00;5.00;5.00;3.00;3.00;9.00;8.00;2.00;6.00; 222;00000176;2008;4.00;6.00;4.00;3.00;1.00;3.00;1.00;3.00;6.00;3.00;3.00;6.00; 222;00000176;2009;3.00;3.00;;;;;;;;;;; 223;00000176;2007;68.00;43.00;31.00;29.00;20.00;206.00;195.00;190.00;149.00;133.00;112.00;100.00; 223;00000176;2008;107.00;80.00;64.00;56.00;44.00;38.00;188.00;176.00;140.00;101.00;79.00;50.00; 223;00000176;2009;35.00;35.00;;;;;;;;;;; 228;00000176;2007;9.00;8.00;7.00;5.00;9.00;9.00;8.00;7.00;9.00;5.00;9.00;8.00; 228;00000176;2008;7.00;8.00;6.00;6.00;6.00;6.00;6.00;4.00;6.00;5.00;8.00;8.00; 228;00000176;2009;8.00;8.00;;;;;;;;;;; 239;00000176;2007;4.00;8.00;8.00;8.00;8.00;8.00;8.00;8.00;6.00;8.00;12.00;9.00; 239;00000176;2008;4.00;4.00;4.00;4.00;4.00;4.00;4.00;4.00;2.00;6.00;6.00;4.00; 239;00000176;2009;4.00;4.00;;;;;;;;;;; 241;00000176;2007;6.00;6.00;5.00;5.00;5.00;5.00;4.00;3.00;7.00;4.00;4.00;4.00; 241;00000176;2008;2.00;5.00;4.00;4.00;4.00;4.00;3.00;3.00;3.00;6.00;;6.00; 241;00000176;2009;4.00;4.00;;;;;;;;;;; 244;00000176;2007;12.00;12.00;12.00;12.00;12.00;12.00;12.00;12.00;11.00;13.00;12.00;6.00; 244;00000176;2008;6.00;8.00;7.00;7.00;7.00;7.00;7.00;5.00;3.00;8.00;8.00;4.00; 244;00000176;2009;4.00;4.00;;;;;;;;;;; 246;00000176;2007;5.00;5.00;5.00;5.00;5.00;5.00;5.00;5.00;7.00;7.00;7.00;5.00; 246;00000176;2008;4.00;5.00;5.00;5.00;3.00;6.00;6.00;6.00;6.00;6.00;5.00;5.00; 246;00000176;2009;5.00;5.00;;;;;;;;;;; 248;00000176;2007;5.00;5.00;5.00;5.00;5.00;5.00;5.00;5.00;7.00;7.00;7.00;7.00; 248;00000176;2008;7.00;7.00;6.00;5.00;5.00;5.00;5.00;5.00;5.00;5.00;4.00;5.00; 248;00000176;2009;5.00;5.00;;;;;;;;;;; 257;00000176;2007;3.00;5.00;3.00;4.00;6.00;4.00;3.00;4.00;7.00;3.00;6.00;6.00; 257;00000176;2008;-1.00;3.00;1.00;3.00;5.00;4.00;4.00;3.00;4.00;2.00;2.00;2.00; 257;00000176;2009;3.00;3.00;;;;;;;;;;; 258;00000176;2007;8.00;8.00;8.00;8.00;6.00;6.00;6.00;6.00;4.00;4.00;4.00;2.00; 258;00000176;2008;4.00;4.00;4.00;4.00;3.00;3.00;3.00;2.00;2.00;5.00;3.00;5.00; 258;00000176;2009;5.00;5.00;;;;;;;;;;; 261;00000176;2007;4.00;4.00;4.00;4.00;4.00;4.00;4.00;3.00;3.00;3.00;3.00;3.00; 261;00000176;2008;3.00;3.00;3.00;2.00;2.00;2.00;2.00;2.00;2.00;2.00;3.00;5.00; 261;00000176;2009;5.00;5.00;;;;;;;;;;; 262;00000176;2007;2.00;2.00;4.00;4.00;4.00;4.00;4.00;4.00;4.00;4.00;4.00;4.00; 262;00000176;2008;3.00;3.00;3.00;3.00;3.00;3.00;3.00;3.00;3.00;3.00;3.00;3.00; 262;00000176;2009;3.00;3.00;;;;;;;;;;; 275;00000176;2007;11.00;10.00;10.00;9.00;8.00;12.00;11.00;11.00;10.00;10.00;10.00;9.00; 275;00000176;2008;9.00;9.00;9.00;9.00;9.00;9.00;9.00;7.00;7.00;7.00;8.00;10.00; 275;00000176;2009;10.00;10.00;;;;;;;;;;; 288;00000176;2007;1.00;7.00;7.00;7.00;7.00;5.00;6.00;6.00;5.00;5.00;5.00;5.00; 288;00000176;2008;5.00;4.00;4.00;4.00;6.00;6.00;6.00;6.00;6.00;5.00;5.00;5.00; 288;00000176;2009;5.00;5.00;;;;;;;;;;; 2AA;00000176;2007;4.00;4.00;4.00;4.00;4.00;1.00;4.00;4.00;4.00;4.00;4.00;4.00; 2AA;00000176;2008;4.00;4.00;4.00;4.00;4.00;4.00;4.00;4.00;4.00;3.00;6.00;5.00; 2AA;00000176;2009;5.00;5.00;;;;;;;;;;; 2AS;00000176;2007;3.00;3.00;3.00;3.00;3.00;;;;3.00;3.00;1.00;; 2ZZ;00000176;2008;3.00;;;;;;;;4.00;3.00;;;
Fichier2 :
00000176;2007;2.146;2.146;2.146;2.195;2.195;2.229;2.229;2.229;2.229;2.229;2.229;2.228;2.146;2.146;2.146;2.195;2.195;2.229;2.229;2.229;2.229;2.229;2.229;2.228; 00000176;2008;2.267;2.267;2.267;2.267;2.267;2.267;2.276;2.276;2.276;2.276;2.276;2.276;2.267;2.267;2.267;2.267;2.267;2.267;2.276;2.276;2.276;2.276;2.276;2.276; 00000176;2009;2.229;;;;;;;;;;;;2.229;;;;;;;;;;;;
FichierTemporaire1 :
206;00000176@2007;6.00;4.00;5.00;5.00;3.00;5.00;8.00;7.00;6.00;10.00;10.00;10.00 206;00000176@2008;10.00;6.00;5.00;3.00;9.00;9.00;6.00;7.00;7.00;5.00;8.00;7.00 206;00000176@2009;5.00;5.00;;;;;;;;;; 212;00000176@2007;2.00;2.00;6.00;6.00;5.00;5.00;4.00;2.00;4.00;3.00;3.00;3.00 212;00000176@2008;3.00;2.00;4.00;4.00;3.00;3.00;3.00;3.00;1.00;2.00;1.00;3.00 212;00000176@2009;3.00;3.00;;;;;;;;;; 219;00000176@2007;9.00;11.00;10.00;7.00;15.00;15.00;15.00;14.00;14.00;12.00;18.00;12.00 219;00000176@2008;11.00;10.00;10.00;9.00;9.00;9.00;9.00;9.00;13.00;11.00;11.00;8.00 219;00000176@2009;7.00;7.00;;;;;;;;;; 220;00000176@2007;7.00;4.00;2.00;7.00;7.00;7.00;7.00;6.00;5.00;2.00;2.00;2.00 220;00000176@2008;8.00;8.00;7.00;7.00;7.00;7.00;6.00;5.00;9.00;9.00;6.00;6.00 220;00000176@2009;6.00;6.00;;;;;;;;;; 222;00000176@2007;6.00;6.00;5.00;5.00;5.00;5.00;3.00;3.00;9.00;8.00;2.00;6.00 222;00000176@2008;4.00;6.00;4.00;3.00;1.00;3.00;1.00;3.00;6.00;3.00;3.00;6.00 222;00000176@2009;3.00;3.00;;;;;;;;;; 223;00000176@2007;68.00;43.00;31.00;29.00;20.00;206.00;195.00;190.00;149.00;133.00;112.00;100.00 223;00000176@2008;107.00;80.00;64.00;56.00;44.00;38.00;188.00;176.00;140.00;101.00;79.00;50.00 223;00000176@2009;35.00;35.00;;;;;;;;;; 228;00000176@2007;9.00;8.00;7.00;5.00;9.00;9.00;8.00;7.00;9.00;5.00;9.00;8.00 228;00000176@2008;7.00;8.00;6.00;6.00;6.00;6.00;6.00;4.00;6.00;5.00;8.00;8.00 228;00000176@2009;8.00;8.00;;;;;;;;;; 239;00000176@2007;4.00;8.00;8.00;8.00;8.00;8.00;8.00;8.00;6.00;8.00;12.00;9.00 239;00000176@2008;4.00;4.00;4.00;4.00;4.00;4.00;4.00;4.00;2.00;6.00;6.00;4.00 239;00000176@2009;4.00;4.00;;;;;;;;;; 241;00000176@2007;6.00;6.00;5.00;5.00;5.00;5.00;4.00;3.00;7.00;4.00;4.00;4.00 241;00000176@2008;2.00;5.00;4.00;4.00;4.00;4.00;3.00;3.00;3.00;6.00;;6.00 241;00000176@2009;4.00;4.00;;;;;;;;;; 244;00000176@2007;12.00;12.00;12.00;12.00;12.00;12.00;12.00;12.00;11.00;13.00;12.00;6.00 244;00000176@2008;6.00;8.00;7.00;7.00;7.00;7.00;7.00;5.00;3.00;8.00;8.00;4.00 244;00000176@2009;4.00;4.00;;;;;;;;;; 246;00000176@2007;5.00;5.00;5.00;5.00;5.00;5.00;5.00;5.00;7.00;7.00;7.00;5.00 246;00000176@2008;4.00;5.00;5.00;5.00;3.00;6.00;6.00;6.00;6.00;6.00;5.00;5.00 246;00000176@2009;5.00;5.00;;;;;;;;;; 248;00000176@2007;5.00;5.00;5.00;5.00;5.00;5.00;5.00;5.00;7.00;7.00;7.00;7.00 248;00000176@2008;7.00;7.00;6.00;5.00;5.00;5.00;5.00;5.00;5.00;5.00;4.00;5.00 248;00000176@2009;5.00;5.00;;;;;;;;;; 257;00000176@2007;3.00;5.00;3.00;4.00;6.00;4.00;3.00;4.00;7.00;3.00;6.00;6.00 257;00000176@2008;-1.00;3.00;1.00;3.00;5.00;4.00;4.00;3.00;4.00;2.00;2.00;2.00 257;00000176@2009;3.00;3.00;;;;;;;;;; 258;00000176@2007;8.00;8.00;8.00;8.00;6.00;6.00;6.00;6.00;4.00;4.00;4.00;2.00 258;00000176@2008;4.00;4.00;4.00;4.00;3.00;3.00;3.00;2.00;2.00;5.00;3.00;5.00 258;00000176@2009;5.00;5.00;;;;;;;;;; 261;00000176@2007;4.00;4.00;4.00;4.00;4.00;4.00;4.00;3.00;3.00;3.00;3.00;3.00 261;00000176@2008;3.00;3.00;3.00;2.00;2.00;2.00;2.00;2.00;2.00;2.00;3.00;5.00 261;00000176@2009;5.00;5.00;;;;;;;;;; 262;00000176@2007;2.00;2.00;4.00;4.00;4.00;4.00;4.00;4.00;4.00;4.00;4.00;4.00 262;00000176@2008;3.00;3.00;3.00;3.00;3.00;3.00;3.00;3.00;3.00;3.00;3.00;3.00 262;00000176@2009;3.00;3.00;;;;;;;;;; 275;00000176@2007;11.00;10.00;10.00;9.00;8.00;12.00;11.00;11.00;10.00;10.00;10.00;9.00 275;00000176@2008;9.00;9.00;9.00;9.00;9.00;9.00;9.00;7.00;7.00;7.00;8.00;10.00 275;00000176@2009;10.00;10.00;;;;;;;;;; 288;00000176@2007;1.00;7.00;7.00;7.00;7.00;5.00;6.00;6.00;5.00;5.00;5.00;5.00 288;00000176@2008;5.00;4.00;4.00;4.00;6.00;6.00;6.00;6.00;6.00;5.00;5.00;5.00 288;00000176@2009;5.00;5.00;;;;;;;;;; 2AA;00000176@2007;4.00;4.00;4.00;4.00;4.00;1.00;4.00;4.00;4.00;4.00;4.00;4.00 2AA;00000176@2008;4.00;4.00;4.00;4.00;4.00;4.00;4.00;4.00;4.00;3.00;6.00;5.00 2AA;00000176@2009;5.00;5.00;;;;;;;;;; 2AS;00000176@2007;3.00;3.00;3.00;3.00;3.00;;;;3.00;3.00;1.00; 2ZZ;00000176@2008;3.00;;;;;;;;4.00;3.00;;
fichiertemporaire 2
00000176@2007;2.146;2.146;2.146;2.195;2.195;2.229;2.229;2.229;2.229;2.229;2.229;2.228;2.146;2.146;2.146;2.195;2.195;2.229;2.229;2.229;2.229;2.229;2.229;2.228; 00000176@2008;2.267;2.267;2.267;2.267;2.267;2.267;2.276;2.276;2.276;2.276;2.276;2.276;2.267;2.267;2.267;2.267;2.267;2.267;2.276;2.276;2.276;2.276;2.276;2.276; 00000176@2009;2.229;;;;;;;;;;;;2.229;;;;;;;;;;;;
Et le fichier final :
206;00000176;2007;6.00;4.00;5.00;5.00;3.00;5.00;8.00;7.00;6.00;10.00;10.00;10.00;2.146;2.146;2.146;2.195;2.195;2.229;2.229;2.229;2.229;2.229;2.229;2.228;2.146;2.146;2.146;2.195;2.195;2.229;2.229;2.229;2.229;2.229;2.229;2.228; 206;00000176;2008;10.00;6.00;5.00;3.00;9.00;9.00;6.00;7.00;7.00;5.00;8.00;7.00;2.267;2.267;2.267;2.267;2.267;2.267;2.276;2.276;2.276;2.276;2.276;2.276;2.267;2.267;2.267;2.267;2.267;2.267;2.276;2.276;2.276;2.276;2.276;2.276; 206;00000176;2009;5.00;5.00;;;;;;;;;;;2.229;;;;;;;;;;;;2.229;;;;;;;;;;;;
Amicalement
Steph70
[edit] A ce que je vois, a priori le souci est sur la commande join...
asevere
Messages postés
13095
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
426
10 août 2009 à 11:22
10 août 2009 à 11:22
[edit] A ce que je vois, a priori le souci est sur la commande join...
Tout à fait,
Mais d'après mes tests, la solution viens par les commandes sort :-)
Fait un essai en enlevant le commutateur -n des commandes sort (le tri numérique n'est pas un bon choix, vu qu'on à l'arobase... ça passait avec le jeu d'essai sans doute parce que les lignes étaient déjà dans le bon ordre)
Tout à fait,
Mais d'après mes tests, la solution viens par les commandes sort :-)
Fait un essai en enlevant le commutateur -n des commandes sort (le tri numérique n'est pas un bon choix, vu qu'on à l'arobase... ça passait avec le jeu d'essai sans doute parce que les lignes étaient déjà dans le bon ordre)
steph70190
Messages postés
13
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
13 août 2009
10 août 2009 à 11:39
10 août 2009 à 11:39
j'ai fait un test très rapide, et comme cela ca a l'air de fonctionner.
je fais un test grandeur nature et te tiens au courant.
Y 'en a pour un grand moment, donc pas d'inquiétude, si je ne transmet pas le resultat aujourd'hui.
Merci encore
Amicalement
Steph70
je fais un test grandeur nature et te tiens au courant.
Y 'en a pour un grand moment, donc pas d'inquiétude, si je ne transmet pas le resultat aujourd'hui.
Merci encore
Amicalement
Steph70
asevere
Messages postés
13095
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
426
10 août 2009 à 11:54
10 août 2009 à 11:54
Re, la différence, (et ce pourquoi j'avais mis le -n), c'est que la ligne d'entête (les libellés) va se retrouver en fin de fichier...
Si c'est un soucis pour toi, il faudrait voir à trier à l'envers, ça doit passer :)
++
Si c'est un soucis pour toi, il faudrait voir à trier à l'envers, ça doit passer :)
++
steph70190
Messages postés
13
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
13 août 2009
11 août 2009 à 13:43
11 août 2009 à 13:43
Rebonjour,
Je reviens vers vous avec des nouvelles.
Alors j'ai lancé la commande hier à 12H30 et malheureusement il y avait une coupure de courant prévu à 9H30 ce matin et j'ai donc arreter le traitement à cet instant.
Ca fait quand meme pas mal de temps mais pour le fichier incomplet, les données etaient parfaitement juste.
Les commandes fonctionnent à merveille.
Merci encore à vous de l'aide que vous m'avez apporté.
Si par hasard vous avez une idée pour réduire le temps de traitement, je suis preneur.
Merci encore.
Amicalement
Steph70
Je reviens vers vous avec des nouvelles.
Alors j'ai lancé la commande hier à 12H30 et malheureusement il y avait une coupure de courant prévu à 9H30 ce matin et j'ai donc arreter le traitement à cet instant.
Ca fait quand meme pas mal de temps mais pour le fichier incomplet, les données etaient parfaitement juste.
Les commandes fonctionnent à merveille.
Merci encore à vous de l'aide que vous m'avez apporté.
Si par hasard vous avez une idée pour réduire le temps de traitement, je suis preneur.
Merci encore.
Amicalement
Steph70
asevere
Messages postés
13095
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
426
11 août 2009 à 14:32
11 août 2009 à 14:32
Salut,
Ravi que ça fonctionne...
Pour les perfs, dommage, mais le traitement de gros volume de données de cette façon n'est pas l'idéal...
Il y a des pistes si rien ne peut être fait en amon (avant l'extraction de ces fichiers)
1°/ A une époque j'avais tésté, c'était pas mal... créer un disque en RAM, et travailler sur ce disque... peut être un peu compliqué à mettre en place et tout dépend de la quantité de RAM dispo et du volume des fichiers
2°/ Te servir des fichiers pour alimenter une petite base de données en local, et faire l'extract à partir de cette base (pas testé, c'est une idée, ca devrait normalement être plus rapide)
3°/ Peut-être utiliser awk à la place de sed (tu gagneras le temps de la recherche du pattern en appliquant la même opération à toute les lignes sans condition)
Dans tout les cas, je pense que le temps et dut au tri des fichiers (indispensable pour join) donc à part récuprer des fichiers déjà triés, ou changer le fonctionnement pour faire ça en BDD, je ne pense pas que tu pourras diminuer significativement le temps de traitement :)
A plus
Ravi que ça fonctionne...
Pour les perfs, dommage, mais le traitement de gros volume de données de cette façon n'est pas l'idéal...
Il y a des pistes si rien ne peut être fait en amon (avant l'extraction de ces fichiers)
1°/ A une époque j'avais tésté, c'était pas mal... créer un disque en RAM, et travailler sur ce disque... peut être un peu compliqué à mettre en place et tout dépend de la quantité de RAM dispo et du volume des fichiers
2°/ Te servir des fichiers pour alimenter une petite base de données en local, et faire l'extract à partir de cette base (pas testé, c'est une idée, ca devrait normalement être plus rapide)
3°/ Peut-être utiliser awk à la place de sed (tu gagneras le temps de la recherche du pattern en appliquant la même opération à toute les lignes sans condition)
Dans tout les cas, je pense que le temps et dut au tri des fichiers (indispensable pour join) donc à part récuprer des fichiers déjà triés, ou changer le fonctionnement pour faire ça en BDD, je ne pense pas que tu pourras diminuer significativement le temps de traitement :)
A plus
dubcek
Messages postés
18784
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 avril 2025
5 630
11 août 2009 à 15:46
11 août 2009 à 15:46
hello
en utilisant avec sort le maximum de mémoire pour limiter la création de fichiers temporaires
-S, --buffer-size=SIZE
use SIZE for main memory buffer
SIZE may be followed by the following multiplicative suffixes: % 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.
en utilisant avec sort le maximum de mémoire pour limiter la création de fichiers temporaires
-S, --buffer-size=SIZE
use SIZE for main memory buffer
SIZE may be followed by the following multiplicative suffixes: % 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.
steph70190
Messages postés
13
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
13 août 2009
11 août 2009 à 16:58
11 août 2009 à 16:58
Merci encore a tous,
Je regarde cela.
Steph70
Je regarde cela.
Steph70
9 août 2009 à 14:58
Du coup, la réponse 20, ça ne fonctionne pas ?