Subtitution de champ avec AWK

Résolu
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

  1. Contributeur
    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. 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
      1. 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
        1. Contributeur
          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
      2. bonjour

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

        cdlt.
        1. Contributeur
          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.
      3. Contributeur
        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
        ...
        ...
        1. bonjour Dubcek

          Merci pour ton retour ton code marche parfaitement.

          Cdlt et bonne journée