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 :

Commande awk pour comparer deux fichiers


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 71
    Points
    71
    Par défaut Commande awk pour comparer deux fichiers
    Bonjour,

    Voilà j'ai deux fichiers qui ont un format quelque peu différent :

    Fichier 1 :
    POSTPO16FGRCQC POST 00000007513085566440005001S020SEDIACHAT 20090825200908242009082420090824
    POSTPO16FGRCSK POST 000003N2000050022220005001S020RACHVENTE 20090825200908242009082420090824
    Bon entre le premier groupe et le deuxième, il y a beaucoup plus d'espace. en gros ce que je veux récupérer, c'est la chaine de la position 75 qui fait 19 caractères et je veux la comparer au fichier ci-dessous :
    000003N200005001111
    000003N200005002222
    000003N200005003333
    Si la chaine récupérée du premier fichier correspond à l'une des chaines du 2ème fichier => recopier la ligne entière du premier fichier dans un troisième fichier en sortie.

    Ma question est : est-il possible de faire çà avec awk et comment faire (cela fait longtemp que je n'ai pas touché à awk...)?

    Merci d'avance,

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 71
    Points
    71
    Par défaut
    Bon finalement, je crois que j'ai trouvé mais bon je ne sais pas si syntaxiquement c'est bon :
    awk 'NR==FNR{a[$1]=substr($0,75,19);next}{if(substr($0,75,19)in a) printf $0"\n"}' file b file a

  3. #3
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Bonsoir,

    Vu le code awk que tu mets là, ça doit faire effectivement un certain temps que tu n'as pas touché à du code. Il ne peut pas marcher et de très loin. Voici un code qui devrait fonctionner. Je ne l'ai pas testé parce que ce que tu donnes en exemple n'est pas utilisable.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{key=substr($0, 75, 19); if (system("grep -q ^" key "$ fichier_b") == "0") print}' fichier_a > fichier_c
    Si jamais tu ne comprenais pas une partie du code, dis-le et je te l'expliquerai.

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

Discussions similaires

  1. [Batch] Deux boucles FOR pour comparer deux fichiers ligne par ligne et une condition IF
    Par Christophe.G dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 18/11/2014, 23h10
  2. code pour comparer deux fichier pdf et envoyer le résultat par mail
    Par rihama dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 06/05/2014, 15h25
  3. commande awk + sortie en deux fichiers
    Par nina2007 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 18/08/2008, 15h54
  4. outils pour comparer deux fichiers xml
    Par donny dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/03/2008, 20h06
  5. API magique pour comparer deux fichiers?
    Par miria.vhg dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 11/07/2007, 11h06

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