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 :

[Bash] : extraction d'une sous chaine


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 25
    Points : 20
    Points
    20
    Par défaut [Bash] : extraction d'une sous chaine
    Bonjour,
    Je cherche à extraire une adresse e-mail d'un fichier d'archive .eml afin de pouvoir restaurer des mails vers des BAL.

    J'arrive à reperer la ligne contenant l'adresse avec grep qui me retourne dans une variable un resultat du type "To: <user@domaine.fr>".
    Il faudrai maintenant que j'arrive à extraire le nom d'utilisateur et le nom de domaine dans deux variable différentes.
    J'ai tenter avec "cut" et "awk" mais sans résultat satisfaisant pour le moment.

    Quelqu'un aurait-il une idée SVP ??
    Merci ..

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    J'ai finalement réussi à extraire mes champs mais il existe surement une meilleur facon de le faire. Voici ce que j'ai trouvé :
    result=$($GREP -i $adr ./arch/$fic)
    nom=$(echo $result | $AWK -F "@" '{ print $1 }' | $CUT -d"<" -f2)
    domain=$(echo $result | $AWK -F "@" '{ print $2 }' | $CUT -d">" -f1)
    $result contient la chaine "To: <user@domaine.fr>"
    $nom contient bien le nom d'utilisateur et $domain, le nom de domaine

    si ca intéresse quelqu'un ou si quelqu'un a une meilleur solution ..

  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 julio_097
    $result contient la chaine "To: <user@domaine.fr>"
    $nom contient bien le nom d'utilisateur et $domain, le nom de domaine
    si ca intéresse quelqu'un ou si quelqu'un a une meilleur solution ..
    Puisque tu es en bash, tu dois avoir la version de awk qui permet de définir plusieurs "Fields Separator".
    En l'occurence, ci-dessous, je déclare comme FS : <, > et @


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    result="To: <toto@yahoo.fr"
    
    User=$(echo $result | awk -F"[<>@]" '{print $2}')
    Domaine=$(echo $result | awk -F"[<>@]" '{print $3}')
    
    echo "* User : $User - Domaine : $Domaine"
    Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    * User : toto - Domaine : yahoo.fr

Discussions similaires

  1. Réponses: 8
    Dernier message: 01/05/2008, 23h15
  2. Extraction d'une sous-chaine de caractère
    Par ninsekh dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 22/04/2008, 08h13
  3. Extraction d'une sous-chaine à partir d'une chaine principale
    Par gazere dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 13/06/2007, 04h08
  4. Extraction d'une sous-chaine
    Par adurand dans le forum Linux
    Réponses: 2
    Dernier message: 17/03/2007, 17h35
  5. [RegEx] extraction d'une sous chaine
    Par zulkifli dans le forum Langage
    Réponses: 2
    Dernier message: 24/03/2006, 13h27

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