Traitement avec Awk

Résolu
Bonjour,

j'ai un fichier file1 ci-dessous et je voudrais obtenir le FILEX ci-dessous avec AWK

file1
7017;1;15;7017;11;34412;Bberi-Abattoir-HR_7
7017;2;17;7017;11;34412;Bberi-Abattoir-HR_7
7017;3;16;7017;11;34412;Bberi-Abattoir-HR_7
7017;4;14;7017;11;34412;Bberi-Abattoir-HR_7
8563;1;19;8563;17;21108;Abattoir-HR_7
8563;2;21;8563;17;21108;Abattoir-HR_7
8563;3;18;8563;17;21108;Abattoir-HR_7
8563;4;17;8563;17;21108;Abattoir-HR_7
8563;5;20;8563;17;21108;Abattoir-HR_7


FILEX


17;21108;Abattoir-HR_7;5
11;34412;Bberi-Abattoir-HR_7;4


Merci d'avance

6 réponses

  1. Contributeur
    Salut,

    Et dubcek devra arriver au fichier final suivant quels critères ? ;-))
    0
    1. salut

      le fichier final donne le nombre de ligne contenant exactement le dernier champ du fichier file1

      "Abattoir-HR_7" et "Bberi-Abattoir-HR_7"

      NB : le fichier original comprend plus de 10 mille lignes.

      merci d'avance.

      cdlt
      0
      1. bonjour Dubcek

        Merci ce code marche parfaitement ( resolu)

        "c'est résolu, là ?
        https://forums.commentcamarche.net/forum/affich-31214843-extraire-des-lignes-dans-un-fichier"

        Merci celui la aussi marche avec quelque regalge a faire. je valide en Resolu

        cependant je galere sur une autre action

        j ai le file1 ci dessous


        File1

        34,31,Bfsam-Bamendzi-II-HR_6
        34,31,Bfsam-Bamendzi-II-HR_1
        34,31,Bfsam-Bamendzi-II-HR_3
        34,31,Bfsam-Bamendzi-II-HR_7
        34,31,Bfsam-Bamendzi-II-HR_8
        34,31,Bfsam-Bamendzi-II-HR_2
        66,31,Meiganga-HR_1
        66,31,Meiganga-HR_2
        66,31,Meiganga-HR_3
        39,31,Dabanga-HR_2
        39,31,Dabanga-HR_1
        39,31,Dabanga-HR_3
        52,31,Ma-HR_3
        52,31,Ma-HR_1
        52,31,Ma-HR_2

        File2

        34,31,Bfsam-Bamendzi-II-GD,1368
        66,31,Meiganga-AG_ADM_004,2136
        39,31,Dabanga-OS,1601
        52,31,Ma-AG_NRO_021,2517



        je veux obtenir le file3 en prenant comme critere le champ1 et champ2

        pour avoir le resultat ci-dessous

        file3


        34,31,Bfsam-Bamendzi-II-HR_6,Bfsam-Bamendzi-II-GD,1368
        34,31,Bfsam-Bamendzi-II-HR_1,Bfsam-Bamendzi-II-GD,1368
        34,31,Bfsam-Bamendzi-II-HR_3,Bfsam-Bamendzi-II-GD,1368
        34,31,Bfsam-Bamendzi-II-HR_7,Bfsam-Bamendzi-II-GD,1368
        34,31,Bfsam-Bamendzi-II-HR_8,Bfsam-Bamendzi-II-GD,1368
        34,31,Bfsam-Bamendzi-II-HR_2,Bfsam-Bamendzi-II-GD,1368
        66,31,Meiganga-HR_1,Meiganga-AG_ADM_004,2136
        66,31,Meiganga-HR_2,Meiganga-AG_ADM_004,2136
        66,31,Meiganga-HR_3,Meiganga-AG_ADM_004,2136
        39,31,Dabanga-HR_2,Dabanga-OS,1601
        39,31,Dabanga-HR_1,Dabanga-OS,1601
        39,31,Dabanga-HR_3,Dabanga-OS,1601
        52,31,Ma-HR_3,Ma-AG_NRO_021,2517
        52,31,Ma-HR_1,Ma-AG_NRO_021,2517
        52,31,Ma-HR_2,Ma-AG_NRO_021,2517


        j ai essaie le code cidessous mais je galere :


        awk -F, '{t[$1, $2]=t[$1, $2] $3 FS} END{for (n in t){sub(FS "$", "", t[n]); print t[n]}}' new_8.txt BTS.txt
        Meiganga-HR_1,Meiganga-HR_2,Meiganga-HR_3,Meiganga-AG_ADM_004
        Bfsam-Bamendzi-II-HR_6,Bfsam-Bamendzi-II-HR_1,Bfsam-Bamendzi-II-HR_3,Bfsam-Bamendzi-II-HR_7,Bfsam-Bamendzi-II-HR_8,Bfsam-Bamendzi-II-HR_2,Bfsam-Bamendzi-II-GD
        Ma-HR_3,Ma-HR_1,Ma-HR_2,Ma-AG_NRO_021
        Dabanga-HR_2,Dabanga-HR_1,Dabanga-HR_3,Dabanga-OS


        Merci encore de ton aide sur ce coup.

        cdlt
        0
        1. essayer
          $ awk 'BEGIN {FS=OFS=","} FNR==NR {t1[$1, $2]=$3 FS $4; next} {print $1, $2, $3, t1[$1, $2]}' fichier2 fichier1
          34,31,Bfsam-Bamendzi-II-HR_6,Bfsam-Bamendzi-II-GD,1368
          34,31,Bfsam-Bamendzi-II-HR_1,Bfsam-Bamendzi-II-GD,1368
          34,31,Bfsam-Bamendzi-II-HR_3,Bfsam-Bamendzi-II-GD,1368
          ...
          ...
          0
          1. Bonjour Dubcek

            super ca marche Bien merci encore.

            cdlt.
            Bonne et heureuse annee 2015
            0