IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[awk] Joindre des fichiers en les triant


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Par défaut [awk] Joindre des fichiers en les triant
    Bonjour

    Je souhaite réaliser une jointure où AWK prendre le nom d'une ligne dans un premier fichier, le placer en champs 1 dans le fichier output, puis va dans un second fichier prend les noms étendus et les place en champs 2.

    Voici les input
    fichier_1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    AB-00050832
    AB-00058394
    AB-00050862
    AB-00004123
    fichier_2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    AB-00050832-18.....1....-8.900758
    AB-00058394-10.....2....-7.981418
    AB-00050832-24.....3....-7.634420
    AB-00050862-10.....4....-7.621671
    AB-00004123-1......5....-7.386272
    AB-00058394-6......6....-7.383604
    AB-00050832-12....14....-7.038594
    AB-00050862-6.....50....-6.701126
    output:
    (fichier_1).........(fichier_2 retrié)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    AB-00050832....AB-00050832-18.....1....-8.900758
    ...............AB-00050832-24.....3....-7.634420
    ...............AB-00050832-12....14....-7.038594
     
    AB-00058394....AB-00058394-10......2...-7.981418
    ...............AB-00058394-6.......6...-7.383604
     
    AB-00050862....AB-00050862-10......4...-7.621671
    ...............AB-00050862-6......50...-6.701126
     
    AB-00004123....AB-00004123-1.......5...-7.386272

    J'ai ajouté des points et des sauts de lignes pour mieux visualiser, mais ils ne sont pas utiles ni à prendre en compte.
    fichier_2 est retrié en fonction de fichier_1 en suivant l'ordre de fichier_1 dans le champs 2.
    Il est juste important de garder l'ordre dans lequel apparaît le nom dans fichier_1. J'ai essayé avec un getline mais j'ai l'impression qu'il y a quelque chose que je n'arrive pas à débloquer.

    Si vous avez une idée, merci beaucoup!

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ awk '(FNR==NR){cle=substr($1,1,11); nb[cle]++; ligne[cle,nb[cle]]=$0; next;} {for (i=1;i<=nb[$1];i++) print $1,ligne[$1,i];}' fichier2.txt fichier1.txt
    AB-00050832 AB-00050832-18.....1....-8.900758
    AB-00050832 AB-00050832-24.....3....-7.634420
    AB-00050832 AB-00050832-12....14....-7.038594
    AB-00058394 AB-00058394-10.....2....-7.981418
    AB-00058394 AB-00058394-6.......6....-7.383604
    AB-00050862 AB-00050862-10.....4....-7.621671
    AB-00050862 AB-00050862-6.....50.....-6.701126
    AB-00004123 AB-00004123-1.......5....-7.386272

  3. #3
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Par défaut
    Merci beaucoup ! Cependant j'aimerais pourvoir mettre une taille de motif quelconque et non limitée à une longueur de 11. Que mettre dans le substr ?

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    On se demande.

  5. #5
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Par défaut
    Est ce qu'une altrnative passant par un split pourrait marché, si l'on était en présence d'un nom ou d'un nom tel que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    blablablabla-1
    blabla-1
    J'ai essayé avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    split($0,1,"-")
    cle = 1[1] "-" 1[2]
    à la place de , mais je bloque toujours

Discussions similaires

  1. Lire des fichiers et les joindre en un PDF
    Par virtuadrack dans le forum C++
    Réponses: 1
    Dernier message: 18/01/2012, 00h22
  2. [VBA-E]Y-a-t-il des fichiers dans les sous-rep de mon rep ?
    Par Kaiba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/04/2007, 22h28
  3. [MCRYPT] Est-il possible de crypter des fichiers avec les bibliothèques de hash ?
    Par a028762 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 01/12/2006, 09h18
  4. problème de joindre des fichiers dans internet explorer
    Par passion_info dans le forum Windows XP
    Réponses: 2
    Dernier message: 07/10/2006, 13h59
  5. Envoyer et recevoir des fichiers aves les Sockets
    Par kaderscream dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/08/2006, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo