Extractions de données entre 2 fichiers

Fermé
Coin-C44 - Modifié le 15 nov. 2017 à 01:48
 Coin-c - 15 nov. 2017 à 09:36
Bonsoir,

- J'ai un fichier "Editions"
Editions des produits
"A";"CTF";"ALPHA";" BETA";
"CTF";"AFFECT";"12300220";"98707718"
"CTF";"AFFECT";"12302223";"98707719"
"CTF";"AFFECT";"24621010";"98707720"
"CTF";"AFFECT";"24623015";"98707721"
"CTF";"AFFECT";"25200120";"98707723"
"CTF";"AFFECT";"25201289";"98707724"


- et mon fichier "Articles"
NOM|987|7718|CLEM|JEAN-JACQUES|
99|987|7718|01022018|
NOM|987|7719|AIT BELHAND|SAMUEL|
88|987|7719|01022018|
NOM|987|7721|BUFF|MARJORIE|
88|987|7721|01022018|
99|987|7721|06|08102017
99|987|7721|06|08012018


-> qui correspondent entre eux via la 4eme colonne du premier et la troisieme du second fichier (5 derniers numeros moins le zero)

Si ce awk me ressort l' identifiant Beta de Editions (4eme colonne) qui dispose de plusieurs lignes 99:

awk -F ';|";"|[|]' '/CTF/ {t[x=substr($4, 4)+0]=1; t1[x]=$4} /^NOM[|]/ && t[$3] {t3[$3]++} END {for (n in t3)if(t3[n]>1)print t1[n]}' Editions Articles
78607721


Comment puis je ajouter dans mon log le champ nom et prenom (ligne commencant par NOM) ainsi que les lignes en questions ? (dans l'exemple : 99|987|7721|06|08102017
99|987|7721|06|08012018)

soit :

Matricule : <champ "matricule"> - Nom et Prénom : <champ "nom prénom">
copie des lignes 99


A voir également:

3 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié le 15 nov. 2017 à 08:28
hello
avec /^NOM[|]/ il va ignorer les lignes du fichier Articles qui commencent par 99
0
Coucou

Desolée, je voulais ecrire


awk -F ';|";"|[|]' '/CTF/ {t[x=substr($4, 4)+0]=1; t1[x]=$4} /^99[|]/ && t[$3] {t3[$3]++} END {for (n in t3)if(t3[n]>1)print t1[n]}' Editions Articles
0
Ceci a l'air de fonctionner.
awk -F ';|";"|[|]' '
/CTF/ {matric[substr($4, 4)+0]=$4}
/^NOM[|]/ {nom[$3]=sprintf("%s %s",$4,$5)}
/^99[|]/ {nb99[$3]++; lig99[$3]=lig99[$3] $0 ORS}
END { for (n in nb99) if(nb99[n]>1 && matric[n])
printf("Matricule : %s - Nom et Prénom : %s\n%s",matric[n],nom[n],lig40[n])
}
' Editions Articles


Merci
[Resolu]
0
Edit : %s\n%s",matric[n],nom[n],lig99[n])
0