Script concaténation deux fichier - Page 2

Résolu
Précédent
  • 1
  • 2
  1. steph70190 Messages postés 13 Statut Membre
     
    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
    0
    1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      Je ne suis pas contre l'utilisation de fichier temporaire.

      Du coup, la réponse 20, ça ne fonctionne pas ?

      0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Il peut avoir une seule correspondance ou plusieurs ?!
    0
  3. steph70190 Messages postés 13 Statut Membre
     
    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 :
    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
    0
    1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      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

      0
  4. steph70190 Messages postés 13 Statut Membre
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    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:
    sed -r  's/^([^;]+);([^;]+);([^;]+);(.*)$/\1;\2@\3;\4/' fic1 |sort -n -t ';' -k 2 > fic1.mod
    par
    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
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      [ [: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é :
      sed -r -e 's/;[[:space:]]*$//'-e 's/^([^;]+);([^;]+);([^;]+);(.*)$/\1;\2@\3;\4/' fic1 |sort -n -t ';' -k 2 > fic1.mod
      ;-))
      0
      1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Ha oui!

        Bien vu :)

        A plus
        0
      2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention  
         
        Elle n'est pas de moi, mais je sais plus qui qui me l'a dit ;-((
        0
  7. steph70190 Messages postés 13 Statut Membre
     
    Ah désolé, la commande susdite me renvoie :

    sed: -e expression #1, char 20: unknown option to `s'


    Amicalement
    Steph70
    0
    1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      Hmmm...

      Il doit manquer un espace avant le second -e
      0
  8. steph70190 Messages postés 13 Statut Membre
     
    C'etait bien cela.

    Problème résolu.

    Encore une fois merci encore.

    Amicalement
    Steph70
    0
  9. steph70190 Messages postés 13 Statut Membre
     
    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
    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
    0
    1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      Hello,


      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...
      0
  10. steph70190 Messages postés 13 Statut Membre
     
    Ben oui,

    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
    0
    1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      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 ?
      $ 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
      0
  11. steph70190 Messages postés 13 Statut Membre
     
    Re et merci encore pour ton aide;

    Alors voila :

    pour le fichier1 original, le file donne
    ASCII text
    le wc -l donne
    445978 


    pour le fichier2 original, le file donne
    ASCII text
    le wc -l donne
    81554


    Pour le fichier1 temporaire, le file donne
    ASCII text
    le wc -l donne
    445979


    Pour le fichier2 temporaire, le file donne
    ASCII text
    le wc -l donne
    81554 


    Amicalement
    Steph70
    0
  12. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    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)
    $ grep 00000176 <fichier>

    0
  13. steph70190 Messages postés 13 Statut Membre
     
    Voici le resultat :

    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...
    0
    1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      [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)
      0
  14. steph70190 Messages postés 13 Statut Membre
     
    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
    0
  15. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    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 :)

    ++
    0
  16. steph70190 Messages postés 13 Statut Membre
     
    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
    0
    1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      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
      0
  17. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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.
    0
  18. steph70190 Messages postés 13 Statut Membre
     
    Merci encore a tous,

    Je regarde cela.

    Steph70
    0
Précédent
  • 1
  • 2