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 :

Awk - Passer un argument ?


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 58
    Par défaut Awk - Passer un argument ?
    Bonjour à tous, voici mon petit problème.

    Dans un script bash, j'utilise awk pour récupérer des valeurs qui se trouvent dans un fichier de configuration.

    du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    test=`awk -F\= '/monpattern/ { print $2 }' config.cfg`
    Maintenant je souhaiterais passer la chaine monpattern (en argument de recherche) à cette ligne que j'aurai initiliasée plus haut, j'ai fait quelques essais sans succès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    monpattern=toto$1
    test=`awk -F\= '/$monpattern/ { print $2 }' config.cfg` 
    ou
    test=`awk -F\= '/\$monpattern/ { print $2 }' config.cfg`
    Comment je pourrai indiquer à ma commande d'utiliser ma variable $monpattern pour la recherche ?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Je ne sais pas si ça peut répondre à ta question, mais pour passer un paramètre à awk, il faut utiliser l'option "-v mon_param=valeur". Par exemple, pour passer la variable $MIN_VERSION :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -v mv=$MIN_VERSION '$1>=mv { print "good" }'

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 58
    Par défaut
    Ok merci de l'information je testerai ceci tout à l'heure.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 58
    Par défaut
    J'ai essayé ceci cet apres-midi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    monpattern=port_modem$1 //chaine à rechercher
     
    test=`awk -F\= -v str=$monpattern '/str/ { print $2 }' config.cfg`
    Et malheuresement sans succès :/ Si quelqu'un aurait une autre idée.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 104
    Par défaut
    Les variables ne sont pas interprétées quand elles sont entre quotes simples comme dans
    monpattern=toto$1
    test=`awk -F\= '/$monpattern/ { print $2 }' config.cfg`
    Pour qu'elles soient interprétées, il faut utiliser des quotes doubles.
    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monpattern=toto$1
    test=`awk -F\= "/$monpattern/ { print \\$2 }" config.cfg`
    P.S. il y a 2 backslahs pour que $2 ne soit pas interprété au titre de "..." puis de `...`.

  6. #6
    Membre Expert

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Par défaut
    Tu peux aussi utiliser ce genre de syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > export hello=world
    > echo '$hello'"$hello"'hello'
    $helloworldhello
    Ca evite de trop mettre de slashs

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 58
    Par défaut
    ca fonctionne impec, merci )

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/12/2005, 18h52
  2. Comment passer des argument a un script php ?
    Par Florina dans le forum Linux
    Réponses: 2
    Dernier message: 11/12/2005, 14h38
  3. Comment passer les arguments à un script perl
    Par belgampaul dans le forum Langage
    Réponses: 4
    Dernier message: 06/08/2005, 12h52
  4. Réponses: 8
    Dernier message: 30/05/2005, 13h55
  5. [Struts] Passer un argument dans un property
    Par Malaussene dans le forum Struts 1
    Réponses: 4
    Dernier message: 07/09/2004, 10h11

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