Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications
Applications Questions sur l'utilisation d'applications, du shell, et des interfaces graphiques (KDE, Gnome, XFCE... )
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/06/2007, 14h48   #1
Invité régulier
 
Inscription : mai 2007
Messages : 12
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : mai 2007
Messages : 12
Points : 5
Points : 5
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
lordduck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 16h51   #2
Invité régulier
 
Inscription : mai 2007
Messages : 12
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : mai 2007
Messages : 12
Points : 5
Points : 5
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.
lordduck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 21h25   #3
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
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 :
1
2
grep -o -f Domaine.cmd Setup.txt
Domaine.cmd :

Domaine1\.postfix[^\]*
Domaine4\.postfix[^\]*
Domaine5\.postfix[^\]*
__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 10h07   #4
Invité régulier
 
Inscription : mai 2007
Messages : 12
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : mai 2007
Messages : 12
Points : 5
Points : 5
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
lordduck est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h14.


 
 
 
 
Partenaires

Hébergement Web