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

Linux Discussion :

Problème de variable avec awk


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 46
    Points : 26
    Points
    26
    Par défaut Problème de variable avec awk
    Bonjour à vous tous. J'aimerais pouvoir passer mes variables nom et prénom dans mon awk mais sa marche pas. Je veux rechercher l'adresse email de l'usagé en recherchant dans les champs nom et prenom et ensuite afficher son adresse email mais l'adresse ne s'affiche simplement pas. Alors je suis sur que c'est une niaiserie mais quand on le sais pas lol on peu pas ben ben avancer.


    Voici mon code pour vous aider un peu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TrouverEmailUsager() {
    echo "Veuillez entrer votre nom :"
    read nom
     
    echo "Veuillez entrer votre prénom :"
    read prenom
     
    awk '/$nom/ , /$prenom/ {print $3}' car
    }

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par carlou135 Voir le message
    Bonjour à vous tous. J'aimerais pouvoir passer mes variables nom et prénom dans mon awk mais sa marche pas. Je veux rechercher l'adresse email de l'usagé en recherchant dans les champs nom et prenom et ensuite afficher son adresse email mais l'adresse ne s'affiche simplement pas. Alors je suis sur que c'est une niaiserie mais quand on le sais pas lol on peu pas ben ben avancer.


    Voici mon code pour vous aider un peu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    TrouverEmailUsager() {
    echo "Veuillez entrer votre nom :"
    read nom
     
    echo "Veuillez entrer votre prénom :"
    read prenom
     
    awk '/$nom/ , /$prenom/ {print $3}' car
    }
     
    opt1="Statistique de la taille du carnet"
    opt2="Afficher le carnet d'adresse"
    opt3="Imprimer le carnet"
    opt4="Ajouter un nouveau membre"
    opt5="Modifier un membre"
    opt6="Rechercher un membre"
    opt7="Information du nombre de membre avec un fournisseur"
    opt8="Quitter"
     
    echo -e "\nBIENVENUE DANS LE GESTIONNAIRE D'ADRESSES EMAILS\n"
     
    echo -e "Menu: \n"
    PS3="
    Entrez votre choix : "
    while (true)
    do
     select option in "$opt1" "$opt2" "$opt3" "$opt4" "$opt5" "$opt6" "$opt7" "$opt8"
      do
       case $option in
            $opt1) echo "Vous avez choisi l'option : $opt1"
                    echo -e "\n"
                    break ;;
            $opt2) AfficherCarnet 
                    echo -e "\n"
                    break ;;
            $opt3) ImprimerCarnet
                    echo -e "\n"
      		break ;;
            $opt4) AjouterMembres $nom $prenom $email 
    		echo $nom $prenom $email $(date +%D) >> car
                    echo -e "\n"
                    break ;;
            $opt5) ModificationEmail
                    echo -e "\n"
                    break ;;
            $opt6) TrouverEmailUsager
                    echo -e "\n"
                    break ;;
            $opt7) FournisseurInternet $fda
    		echo "Il y a 23 usagés utilisant le fournisseur d'accès internet nommé $fda."
                    break ;;
    	$opt8) echo "Vous avez quitter le programme!!"
    		exit ;;
            *) echo "Option inexistante";
                    exit ;;
       esac
      done
    done
    Une variable shell n'est pas connue du programme awk qui est exécuté, rappelons-le, dans un autre processus (comme toute commande lancée).
    Pour passer une variable à awk, faut utiliser l'option "-v var=valeur" (si t'avais regardé le man tu l'aurais vu) et la variable "var" sera vue dans le awk comme contenant la valeur "valeur"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -v "x=toto" -v "y=tata" '{printf("%s %s\n", x, y)}'

  3. #3
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup à vous pour votre solution. Mais maintenant sa me marque comme erreur: awk: improper assignment: -v =nom.

    Voici le code que j'ai entré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -v "$1=nom", -v "$2=prenom" '{printf ("%s\n", $3)}' car.
    C'est à cause que si je change les $ par nom et prenom toute les adresses emails du carnet s'affiche mais je veux juste l'email de l'usager et pas les autres.

  4. #4
    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
    Ça doit marcher avec 1 fichier du style :
    http://www.shellunix.com/awk.html

    car :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DUPOND Albert albert_dupond@yahoo.fr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -v nom=$nom -v prenom=$prenom '{ if ($1 == nom && $2 == prenom) print $3 }' car

  5. #5
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    Je vous remerci, tout marche très bien maintenant .

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par carlou135 Voir le message
    Merci beaucoup à vous pour votre solution. Mais maintenant sa me marque comme erreur: awk: improper assignment: -v =nom.

    Voici le code que j'ai entré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -v "$1=nom", -v "$2=prenom" '{printf ("%s\n", $3)}' car.
    C'est à cause que si je change les $ par nom et prenom toute les adresses emails du carnet s'affiche mais je veux juste l'email de l'usager et pas les autres.
    Où ai-je écrit une seule fois que la variable qui serait créé dans "awk" commencerait par "$" dans mon exemple ? Où ai-je dit de mettre des noms de variables commençant par des chiffres ? Ai-je mis une virgule ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -v <la_variable_qui_sera_connue_de_awk>=<la_valeur_qui_est_connue_du_shell>
    Faut faire un effort du coté comprenette...

Discussions similaires

  1. interpretation de variable avec awk
    Par vince2005 dans le forum Unix
    Réponses: 1
    Dernier message: 22/05/2010, 10h16
  2. Réponses: 0
    Dernier message: 16/04/2010, 17h21
  3. problème de variables avec script awk
    Par zcoul dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 19/02/2008, 14h16
  4. Problème de variables avec SQL
    Par sabchris dans le forum SQL
    Réponses: 2
    Dernier message: 01/10/2007, 10h10
  5. problème de variable avec événement
    Par seb-oulba dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/09/2006, 17h16

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