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 :

Joindre deux fichiers sur plusieurs champs


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 176
    Points : 133
    Points
    133
    Par défaut Joindre deux fichiers sur plusieurs champs
    Bonsoir,

    la commande join permet de fusionner les lignes de deux fichiers ayant un seul champ commun, avec des fichiers bien evidement trié par ordre croissant selon la clé de jointure

    mais , dans le cas oû j'ai plus qu'une clé de jointure comment faire un join sur plusieurs champs à la fois?

    Exemple de mes fichiers :
    fichier 1
    1 2 fr -1.414
    1 3 fr -1.553
    1 4 fr -1.657
    1 5 fr -1.755
    1 6 fr -1.771
    2 2 fr -1.415
    2 3 fr -1.573
    2 4 fr -1.763
    2 5 fr -1.841

    fichier 2
    1 2 an -1.082
    1 3 an -.969
    1 4 an -.863
    1 5 an -.730
    1 6 an -.689
    2 2 an -1.017
    2 3 an -.886
    2 4 an -.753
    2 5 an -.663
    mes champs de jointure sont col1 et col2 dans cet exemple

    une idée est de concaténer les n champs de jointure en un seul puis les écarter en fichier de sortie , bien je vois pas comme solution pratique

    Merci d'avacne pour toute aide

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 587
    Points : 19 466
    Points
    19 466
    Par défaut
    Bonjour,

    Citation Envoyé par AJ_ing
    cancaténer les n champs de jointure en un seul puis les écarter en fichier de sortie
    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ insSep() { awk '{s=$0; r=$1" "$2; sub(r,"",$0); sub($0,"",s); print s"-"$0}' <(sort -n -k1,2 $1);}
    $ join -t'-' -j 1 <(insSep fichier1) <(insSep fichier2) | sed 's/-//'
    1 2 fr -1.414-  an -1.082
    1 3 fr -1.553-  an -.969
    1 4 fr -1.657-  an -.863
    1 5 fr -1.755-  an -.730
    1 6 fr -1.771-  an -.689
    2 2 fr -1.415-  an -1.017
    2 3 fr -1.573-  an -.886
    2 4 fr -1.763-  an -.753
    2 5 fr -1.841-  an -.663
    ...
    ?

  3. #3
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    À partir du moment où les fichiers sont triés, on peut aussi...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ paste f1 f2 | awk '$1 == $5 && $2 == $6 { print $1,$2,$3,$4,$7,$8 }'
    1 2 fr -1.414 an -1.082
    1 3 fr -1.553 an -.969
    1 4 fr -1.657 an -.863
    1 5 fr -1.755 an -.730
    1 6 fr -1.771 an -.689
    2 2 fr -1.415 an -1.017
    2 3 fr -1.573 an -.886
    2 4 fr -1.763 an -.753
    2 5 fr -1.841 an -.663
     
    $

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/09/2009, 13h30
  2. Réponses: 2
    Dernier message: 30/11/2004, 09h42
  3. Recherche d'un mot avec LIKE sur plusieurs champs
    Par reynhart dans le forum Langage SQL
    Réponses: 16
    Dernier message: 26/11/2004, 17h41
  4. [CR] Groupement dynamique sur plusieurs champs paramètrés
    Par CDRIK dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 07/06/2004, 17h55
  5. recuperer les id sur plusieurs champs
    Par matN59 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/03/2004, 10h23

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