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

Applications et environnements graphiques Discussion :

[SED - AWK] Recherches du contenu d'un fichier dans un autre


Sujet :

Applications et environnements graphiques

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut [SED - AWK] Recherches du contenu d'un fichier dans un autre
    Mon nouveau probleme me semble assez simple a resoudre et pourtant... je n'obtient pas le resultat que je desire.

    Je possede 2 fichiers, l'un contenant des noms de domaines; l'autre comprenant aussi les noms de domaine mais ayant de nombreuses informations supplementaires (un peu trop d'ou la recherche).

    ils sont composés de cette facon :

    Domaine.txt

    Domaine1
    Domaine4
    Domaine5
    ...

    Setup.txt

    K SOFTWARE\InternetShopper\Mail\Domaine1.postfix1\Users:
    blablabla
    blablabla
    K SOFTWARE\InternetShopper\Mail\Domaine2.postfix2\Users:
    blablabla
    blablabla
    K SOFTWARE\InternetShopper\Mail\Domaine3.postfix3\Users:
    blablabla
    blablabla
    K SOFTWARE\InternetShopper\Mail\Domaine4.postfix4\Users:
    blablabla
    blablabla
    K SOFTWARE\InternetShopper\Mail\Domaine5.postfix5\Users:
    blablabla
    blablabla
    ...

    Et je desire donc tout simplement obtenir les ".postfix" correspondant aux noms des domaines contenu (et uniquement) dans Domaine.txt

    Result.txt

    Domaine1.postfix1
    Domaine4.postfix4
    Domaine5.postfix5
    ...


    J'ai essayé plusieurs methodes :

    grep -f Domaine.txt Setup.txt

    awk -v FS='Mail\\' 'NR==FNR { Buff[$0] ; next } ($1 in Buff)' Domaine.txt Setup.txt


    etc

    Si quelqu'un a une methode ou une idée ? Merci d'avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Bon finalement en cherchant du coté de join j'ai trouvé ce que je voulais.

    donc un petit traitement de fichier en awk :

    awk -F "\\" ' /\\InternetShopper\\Mail\\/ {print $4 }' Setup.txt | awk -F ":" '{print $1}' | uniq | awk -F "." '{print $1 " " $2}' > buff

    et une commande join toute simple :

    join buff Domaine.txt > Result.txt

    et j'obtient le resultat desiré
    Je pense cependant qu'on peut allez plus loin dans la commande join ( ou gref -f ) pour eviter pas mal de traitement awk mais je n'ai pas (encore) trouvé comment.

  3. #3
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par lordduck
    Domaine.txt

    Domaine1
    Domaine4
    Domaine5
    ...

    Setup.txt

    K SOFTWARE\InternetShopper\Mail\Domaine1.postfix1\Users:
    blablabla
    blablabla
    ...


    Si quelqu'un a une methode ou une idée ? Merci d'avance

    Valable en bash

    http://www.shellunix.com/regexp.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    grep -o -f Domaine.cmd Setup.txt
    Domaine.cmd :

    Domaine1\.postfix[^\]*
    Domaine4\.postfix[^\]*
    Domaine5\.postfix[^\]*

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Apres une toute petite modification cela fonctionne
    pour generer le fichier Domaine.cmd :

    awk '{print $0 "\\.[^\\]*"}' Domaine.txt > Domaine.cmd

    cela genere le fichier Domaine.cmd :

    Domaine1\.[^\]*
    Domaine4\.[^\]*
    Domaine5\.[^\]*


    tout simplement parceque les postfixs etaient du type .fr .com etc...
    Merci donc

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

Discussions similaires

  1. copie contenu d'un fichier dans un autre fichier avec sed
    Par zorooo dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 18/01/2010, 09h17
  2. Réponses: 1
    Dernier message: 15/05/2007, 16h55
  3. Copier le contenu d'un fichier dans un autre
    Par moncef357 dans le forum Pascal
    Réponses: 20
    Dernier message: 09/05/2007, 16h02
  4. Ajouter le contenu d'un fichier dans un autre
    Par persia dans le forum Langage
    Réponses: 3
    Dernier message: 12/03/2007, 09h37
  5. [LG]Ecrire le contenu d'un fichier dans un autre
    Par lucke dans le forum Langage
    Réponses: 10
    Dernier message: 26/04/2003, 20h48

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