Bon voici la solution adoptée :
1: Transformer code_art;campagne en code_art@campagne, et trier le fichier numeriquement sur le champ 2
sed -r -e 's/;[[:space:]]*$//' -e 's/^([^;]+);([^;]+);([^;]+);(.*)$/\1;\2@\3;\4/' D_STO2.CSV |sort -n -t ';' -k 2 > fic1.mod
2: Transformer code_art;campagne en code_art@campagne, et trier le fichier numeriquement sur le champ 1
sed -r 's/^([^;]+);([^;]+);(.*)$/\1@\2;\3/' D_PMA2.CSV |sort -n -t ';' -k 1 > fic2.mod
3: Joindre les fichiers sur les champ 2 du fichier 1 et 1 du fichier2, remettre le champ mag à la bonne place, et separer le champ code_art@campagne en deux champ distincts
join -1 2 -2 1 -t ';' fic1.mod fic2.mod | sed -r 's/^(.+)@([^;]+);([^;]+);(.*)$/\3;\1;\2;\4/' > STOCK.CSV
Le gros souci avec cette méthode, c'est le temps de traitement qui depasse les 24 h.
Il est vrai que le premier fichier comprend un peu plus de 440 000 lignes et le deuxième pas loin de 10 000.
Si vous avez une idée pour réduire le temps de traitement ou encore une autre solution....
Merci
Amicalement
Steph70
Partager