Subtitution de champ avec AWK

Résolu
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   -  
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je possède le file1 et le file2 , je veux obtenir le 3ème fichier après taritement avec awk

File1
1,LAGOMA_1800-1,LAGOMA_1800
1,LAGOMA_1800-2,LAGOMA_1800
1,LAGOMA_1800-3,LAGOMA_1800
1,ORCHIDEE_1800-1,ORCHIDEE
1,ORCHIDEE_1800-2,ORCHIDEE
1,ORCHIDEE_1800-3,ORCHIDEE
1,BRIMBRESSO-1,BRIMBRESSO
1,BRIMBRESSO-2,BRIMBRESSO
1,BRIMBRESSO-3,BRIMBRESSO
1,ABADJIN-1,ABADJIN_1
1,ABADJIN-2,ABADJIN_1
1,ABADJIN-3,ABADJIN_1
1,LOKOUA_1800-1,LOKOUA_2
1,LOKOUA_1800-2,LOKOUA_2
1,LOKOUA_1800-3,LOKOUA_2
20,BERVERLY-1,BERVERLY_1
20,BERVERLY-2,BERVERLY_1
20,BERVERLY-3,BERVERLY_1
20,BERVERLY_1800-1,BERVERLY_2
20,BERVERLY_1800-2,BERVERLY_2
20,BERVERLY_1800-3,BERVERLY_2
20,TOSSINOU-1,TOSSINOU_1
20,TOSSINOU-2,TOSSINOU_1
20,TOSSINOU-3,TOSSINOU_1
20,TOSSINOU_1800-1,TOSSINOU_2
20,TOSSINOU_1800-2,TOSSINOU_2
20,TOSSINOU_1800-3,TOSSINOU_2
20,SOL_BENI-1,SOL_BENI_1
20,SOL_BENI-2,SOL_BENI_1
20,SOL_BENI-3,SOL_BENI_1
20,SOL_BENI_1800-1,SOL_BENI_2
20,SOL_BENI_1800-2,SOL_BENI_2
20,SOL_BENI_1800-3,SOL_BENI_2
2,SOILIO_1800-3,SOILIO_2
2,MAMA-1,MAMA
2,MAMA-2,MAMA
2,MAMA-3,MAMA
2,KOBOUO-1,KOBOUO
2,KOBOUO-2,KOBOUO
2,KOBOUO-3,KOBOUO
2,LELEBREKOUA-1,LELEBREKOUA_1
2,LELEBREKOUA-2,LELEBREKOUA_1
2,LELEBREKOUA-3,LELEBREKOUA_1
2,DJOUKOUYO-1,DJOUKOUYO
2,DJOUKOUYO-2,DJOUKOUYO
2,DJOUKOUYO-3,DJOUKOUYO

File2


1,BSCSNT7
11,BSCDABOU
12,BSCYAKRO4
14,BSCLUM6
15,BSCSP7
16,BSCYAKRO5
17,BSCLUM5
19,BSCVIL10
2,BSCGAGNOA
20,BSCVIL11
22,BSCSNT9
25,BSCCAF11
26,BSCABG6
28,BSCLUM7
29,BSCBKE5
33,BSCCAF9
34,BSCSP6
35,BSCDALOA7
4,BSCMAN2
42,BSCVIL8
43,BSCVIL7
44,BSCYAKRO3
45,BSCLUM4
46,BSCBKE4
47,BSCABG4
48,BSCBKE3
5,BSCCAF10
50,BSCSNT6
51,BSCDALOA5
52,BSCSP5
53,BSCDALOA6
54,BSCSP4
55,BSCMAN
56,BSCKGO1
58,BSCVIL9
59,BSCCAF8
60,BSCSNT8
61,BSCKM4_5
62,BSCABG5
9,BSCDALOA9


file 3 resultat


BSCSNT7,LAGOMA_1800-1,LAGOMA_1800
BSCSNT7,LAGOMA_1800-2,LAGOMA_1800
BSCSNT7,LAGOMA_1800-3,LAGOMA_1800
BSCSNT7,ORCHIDEE_1800-1,ORCHIDEE
BSCSNT7,ORCHIDEE_1800-2,ORCHIDEE
BSCSNT7,ORCHIDEE_1800-3,ORCHIDEE
BSCSNT7,BRIMBRESSO-1,BRIMBRESSO
BSCSNT7,BRIMBRESSO-2,BRIMBRESSO
BSCSNT7,BRIMBRESSO-3,BRIMBRESSO
BSCSNT7,ABADJIN-1,ABADJIN_1
BSCSNT7,ABADJIN-2,ABADJIN_1
BSCSNT7,ABADJIN-3,ABADJIN_1
BSCSNT7,LOKOUA_1800-1,LOKOUA_2
BSCSNT7,LOKOUA_1800-2,LOKOUA_2
BSCSNT7,LOKOUA_1800-3,LOKOUA_2
BSCVIL11,BERVERLY-1,BERVERLY_1
BSCVIL11,BERVERLY-2,BERVERLY_1
BSCVIL11,BERVERLY-3,BERVERLY_1

merci pour votre aide

6 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

Il serait bien de nous dire quelles sont les correspondances entre les deux fichiers qui permettent de créer le troisième, plutôt que de nous casser la tête à chercher, non ? ;-\

Merci.
1
Utilisateur anonyme
 
salut,

je plussoie zipe :
Il serait bien de nous dire quelles sont les correspondances entre les deux fichiers qui permettent de créer le troisième, plutôt que de nous casser la tête à chercher

apparemment, il s'agirait de réaliser une jointure => utiliser
join

voir:
info join
0
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour

désolé les gars .

rechercher le premier champ du file2 dans le premier champ du file1 et le substituer par le champ2 du file2 et obtenir le file 3 ci-dessous.


resultat file 3

BSCSNT7,LAGOMA_1800-1,LAGOMA_1800
BSCSNT7,LAGOMA_1800-2,LAGOMA_1800
BSCSNT7,LAGOMA_1800-3,LAGOMA_1800
BSCSNT7,ORCHIDEE_1800-1,ORCHIDEE
BSCSNT7,ORCHIDEE_1800-2,ORCHIDEE
BSCSNT7,ORCHIDEE_1800-3,ORCHIDEE
BSCSNT7,BRIMBRESSO-1,BRIMBRESSO
BSCSNT7,BRIMBRESSO-2,BRIMBRESSO
BSCSNT7,BRIMBRESSO-3,BRIMBRESSO
BSCSNT7,ABADJIN-1,ABADJIN_1
BSCSNT7,ABADJIN-2,ABADJIN_1
BSCSNT7,ABADJIN-3,ABADJIN_1
BSCSNT7,LOKOUA_1800-1,LOKOUA_2
BSCSNT7,LOKOUA_1800-2,LOKOUA_2
BSCSNT7,LOKOUA_1800-3,LOKOUA_2
BSCVIL11,BERVERLY-1,BERVERLY_1
BSCVIL11,BERVERLY-2,BERVERLY_1
BSCVIL11,BERVERLY-3,BERVERLY_1
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
En gros c'est la même solution que dans ce post, suffit juste d'adapter un poil ;-\

Par contre pourquoi dans le résultat final, les champs correspondants à
20,BSCVIL11
ne font ressortir que 3 entrées, alors qu'il y en a 18 qui correspondent ?

20,BERVERLY-1,BERVERLY_1
20,BERVERLY-2,BERVERLY_1
20,BERVERLY-3,BERVERLY_1
20,BERVERLY_1800-1,BERVERLY_2
20,BERVERLY_1800-2,BERVERLY_2
20,BERVERLY_1800-3,BERVERLY_2
20,TOSSINOU-1,TOSSINOU_1
20,TOSSINOU-2,TOSSINOU_1
20,TOSSINOU-3,TOSSINOU_1
20,TOSSINOU_1800-1,TOSSINOU_2
20,TOSSINOU_1800-2,TOSSINOU_2
20,TOSSINOU_1800-3,TOSSINOU_2
20,SOL_BENI-1,SOL_BENI_1
20,SOL_BENI-2,SOL_BENI_1
20,SOL_BENI-3,SOL_BENI_1
20,SOL_BENI_1800-1,SOL_BENI_2
20,SOL_BENI_1800-2,SOL_BENI_2
20,SOL_BENI_1800-3,SOL_BENI_2
2,SOILIO_1800-3,SOILIO_2
0
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour

pas d'importance c'est moi même qui a réduit la liste.


cdlt.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Alors il te suffit d'adapter la commande
join
donnée dans le post en lien dans mon précédent message et tu auras ton résultat.

N'oublie pas de venir donner la solution finale. Merci d'avance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
$ awk 'BEGIN {FS=OFS=","} NR==FNR {t[$1]=$2; next } {$1=t[$1]; print}' file2 file1
BSCSNT7,LAGOMA_1800-1,LAGOMA_1800
BSCSNT7,LAGOMA_1800-2,LAGOMA_1800
BSCSNT7,LAGOMA_1800-3,LAGOMA_1800
BSCSNT7,ORCHIDEE_1800-1,ORCHIDEE
BSCSNT7,ORCHIDEE_1800-2,ORCHIDEE
BSCSNT7,ORCHIDEE_1800-3,ORCHIDEE
BSCSNT7,BRIMBRESSO-1,BRIMBRESSO
BSCSNT7,BRIMBRESSO-2,BRIMBRESSO
BSCSNT7,BRIMBRESSO-3,BRIMBRESSO
BSCSNT7,ABADJIN-1,ABADJIN_1
...
...
0
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour Dubcek

Merci pour ton retour ton code marche parfaitement.

Cdlt et bonne journée
0