Concat de fichiers
bouna
-
bouna -
bouna -
Bonjour,
avec ce script ci-dessous,j'arrivais a reunir les fichiers a1,a2 vers a3 et un fichier de rejet.
awk 'BEGIN{FS=OFS="|"};NF<4 {x[$1]=$2;z[$1]=$0}; NF>4 {if(!x[$1]){print > "a4";next}; $2=x[$1] OFS $2;print;z[$1]=""};END{for(n in z)if(z[n])print z[n] > "a4"}' a2 a1 > a3
voici le contenu des fichiers:
a1:
85884769370|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|
08235367539|02900|Bassirou |DILLO|13081967|LOUGA|17052010|
98545784521|02000|Babacar |DOUMBIA|31121955|THIES|17052010|
53677448920|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|
15566728777|01700|ALI |DIOP|29031975|MALI|17052010|
77992939257|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|
a2:
85884769370|030|
08235367539|050|
98545784521|051|
53677448920|060|
15566728777|070|
77992939257|071|
le fichier onbtenu a3 est:
85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|
98545784521|051|02000|Babacar |DOUMBIA|31121955|THIES|17052010|
53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|
15566728777|070|01700|ALI |DIOP|29031975|MALI|17052010|
77992939257|071|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|
mon pb aujourd'hui est que le fichier A2 a changé pour etre:
new a2:
85884769370|030|2557245308|
08235367539|050|4597890000|
98545784521|051||
53677448920|060|7658909098|
15566728777|070|2367997675|
77992939257|071|8763088807|
MERCI DE ME MODIFIER LE SCRIPTE POUR QUE JE SUISSE AVOIR
a3:
85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|2557245308|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|4597890000|
98545784521|051|02000|Babacar |DOUMBIA|31121955|THIES|17052010||
53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|
15566728777|070|01700|ALI |DIOP|29031975|MALI|17052010|7658909098|
77992939257|071|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|8763088807|
avec ce script ci-dessous,j'arrivais a reunir les fichiers a1,a2 vers a3 et un fichier de rejet.
awk 'BEGIN{FS=OFS="|"};NF<4 {x[$1]=$2;z[$1]=$0}; NF>4 {if(!x[$1]){print > "a4";next}; $2=x[$1] OFS $2;print;z[$1]=""};END{for(n in z)if(z[n])print z[n] > "a4"}' a2 a1 > a3
voici le contenu des fichiers:
a1:
85884769370|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|
08235367539|02900|Bassirou |DILLO|13081967|LOUGA|17052010|
98545784521|02000|Babacar |DOUMBIA|31121955|THIES|17052010|
53677448920|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|
15566728777|01700|ALI |DIOP|29031975|MALI|17052010|
77992939257|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|
a2:
85884769370|030|
08235367539|050|
98545784521|051|
53677448920|060|
15566728777|070|
77992939257|071|
le fichier onbtenu a3 est:
85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|
98545784521|051|02000|Babacar |DOUMBIA|31121955|THIES|17052010|
53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|
15566728777|070|01700|ALI |DIOP|29031975|MALI|17052010|
77992939257|071|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|
mon pb aujourd'hui est que le fichier A2 a changé pour etre:
new a2:
85884769370|030|2557245308|
08235367539|050|4597890000|
98545784521|051||
53677448920|060|7658909098|
15566728777|070|2367997675|
77992939257|071|8763088807|
MERCI DE ME MODIFIER LE SCRIPTE POUR QUE JE SUISSE AVOIR
a3:
85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|2557245308|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|4597890000|
98545784521|051|02000|Babacar |DOUMBIA|31121955|THIES|17052010||
53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|
15566728777|070|01700|ALI |DIOP|29031975|MALI|17052010|7658909098|
77992939257|071|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|8763088807|
A voir également:
- Concat de fichiers
- Explorateur de fichiers - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Gestionnaire de fichiers - Télécharger - Gestion de fichiers
- Wetransfer gratuit fichiers lourd - Guide
1 réponse
Bonjour,
Ceci semble donner le résultat demandé:
Ceci dit, le fichier de sortie que tu donnes en exemple semble comporter des erreurs:
85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|2557245308|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|4597890000|
98545784521|051|02000|Babacar |DOUMBIA|31121955|THIES|17052010||
53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|
15566728777|070|01700|ALI |DIOP|29031975|MALI|17052010|7658909098|
77992939257|071|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|8763088807|
Ceci semble donner le résultat demandé:
awk 'BEGIN{FS=OFS="|"}FNR==NR{b[$1]=$1FS$2;c[$1]=$3;next}{print b[$1],$2,$3,$4,$5,$6,$7,c[$1]FS}' a2 a1
Ceci dit, le fichier de sortie que tu donnes en exemple semble comporter des erreurs:
85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|2557245308|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|4597890000|
98545784521|051|02000|Babacar |DOUMBIA|31121955|THIES|17052010||
53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|
15566728777|070|01700|ALI |DIOP|29031975|MALI|17052010|7658909098|
77992939257|071|00700|Bintou |NDIAYE|24041973|DAKAR|17052010|8763088807|
Donnes un exemple complet et réaliste qui englobe tous les cas possibles sinon on va tourner en rond.
- le premier champs de a1 et a2 doivent etre exactement le meme, sinon s'il y a des enregistremes manquant soit ds a1 soit a2 ils doivent etre envoyer ds a4.
Aujourd'hui le script fonction tres bien, le seul pb est que a2 a herité d'un colonne en plus(il etait a 2colonnes il passe a 3colonnes)
vous m'avais aidé pour ce script decri plus haut.. il y a une evolution ds mon fichier a2 (au lieu de 2colonnes c'est maintenant 3col)