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 :

Questions sur la commande awk


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut Questions sur la commande awk
    Bonjour,

    voici mon code

    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
     
     
    su - ora${user} -c "sqlplus -s system/manager <<!
     
    set head off
    set pages 100
    set lines 200
    set feedback off
    SELECT rpad(Total.tablespace_name,15,' ') \"Tablespace Name\",
           lpad((Free_space),15,' ') \"Espace Space\",
           round(((Free_space/total_space)*100),0) \"Free Space Percentage\"
    FROM
      (select tablespace_name, sum(bytes) Free_Space
         from sys.dba_free_space
        group by tablespace_name
      ) Free,
      (select tablespace_name,  sum(bytes) TOTAL_SPACE
         from sys.dba_data_files
        group by tablespace_name
      ) Total
    WHERE Free.tablespace_name = Total.tablespace_name;
     
    !" | awk -f - -v <<-EOF
    NR > 1 {
    if ($3 >= 5)
    print "ALERTE : Pour la base le tablespace ",$1,"ne lui reste plus que ",$3,"% de libre"
     
    }
    EOF
    je voudrais passer en paramètre une variable mais je ne sais pas comment écrire la synthaxe pour cela

    Merci
    c@simir

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut
    Peux tu être plus explicite?

  3. #3
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    bien je voudrais pouvoir envoyer une variable en même temps que le flux que je recupère dans awk

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    ma commande | awk  -f - -v var=ma_variable_externe '{print ma_variable_externe}'
    voilà ce que je voudrais faire ...
    c@simir

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut
    Je n'ai pas le niveau pour bien te répondre mais je peux te donner une piste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '{print ma_variable_externe}'
    je sais pas si c'est une faute de frappe mais il te faudra mettre des "" et non des '' pour que la varaible soit reconnue

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Points : 402
    Points
    402
    Par défaut
    Les arguments de ton shell sont accessible avec les variables : $1 $2 etc. selon le nombre d'arguments. Tu as aussi $# pour le nombre d'arguments et $@ ... mais la je ne sais plus trop à quoi ca sert.

    Regarde ici : http://www.freeos.com/guides/lsst/ch02sec14.html
    "There are two major products that come out of Berkeley: LSD and UNIX.
    We don't believe this to be a coincidence."
    - Jeremy S. Anderson

    La FAQ Python
    Les cours et tutoriels pour apprendre Python
    Le Forum Python

  6. #6
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    ce que je veux savoir c'est comment passer un paramètre en plus du flux pipé dans la commande awk ... à moins d'avoir mal compris ta réponse .. dans ce cas j'aurais besoin d'un exemple ..

    revoici mon exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
     
    ma_commande | awk -f- var=une_autre_valeur <<EOF
     
    print $0 , une_autre_valeur
     
    EOF
    c@simir

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Points : 402
    Points
    402
    Par défaut
    Citation Envoyé par vbcasimir
    ce que je veux savoir c'est comment passer un paramètre en plus du flux pipé dans la commande awk ... à moins d'avoir mal compris ta réponse .. dans ce cas j'aurais besoin d'un exemple ..
    Mouarf ! Non c"est moi qui ai mal compris ta question .... dsl !
    Heu la comme ça ... aucune idée !
    "There are two major products that come out of Berkeley: LSD and UNIX.
    We don't believe this to be a coincidence."
    - Jeremy S. Anderson

    La FAQ Python
    Les cours et tutoriels pour apprendre Python
    Le Forum Python

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Je pense que c'est cela que tu cherches :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ma_variable_externe="la valeur à imprimer"
    ma commande | awk  -f - -v myvar=$ma_variable_externe '{print myvar}'
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ma commande | awk  -f - -v myvar="la valeur à imprimer" '{print myvar}'
    [/code]
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  9. #9
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    apparemment lorsqu'on saisit la commande ainsi

    ma_variable_externe="la valeur à imprimer"
    ma_commande | awk -f - -v myvar=${user} '{print myvar}'
    j'ai l'erreur suivante


    awk: -:24: fatal: cannot open file `{print myvar}' for reading (No such file or directory)
    snif ...
    c@simir

  10. #10
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Et comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ma_variable_externe="la valeur à imprimer"
    ma_commande |  awk -v myvar=${ma_variable_externe} '{print myvar}'
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  11. #11
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    bien lorsque j'execute ma commande donc comme ceci

    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
     
     
     
    user=hexa
    su - ora${user} -c "sqlplus -s system/manager <<!
    set head off
    set pages 100
    set lines 200
    set feedback off
    SELECT rpad(Total.tablespace_name,15,' ') \"Tablespace Name\",
           lpad((Free_space),15,' ') \"Espace Space\",
           round(((Free_space/total_space)*100),0) \"Free Space Percentage\"
    FROM
      (select tablespace_name, sum(bytes) Free_Space
         from sys.dba_free_space
        group by tablespace_name
      ) Free,
      (select tablespace_name,  sum(bytes) TOTAL_SPACE
         from sys.dba_data_files
        group by tablespace_name
      ) Total
    WHERE Free.tablespace_name = Total.tablespace_name;
     
    !" | awk -f - -v myvar=${user} '{print myvar}'
    bien j'ai le retour d'erreur que j'ai cité dans la réponse précedente ..
    c@simir

  12. #12
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Le problème ici c'est le -f -
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  13. #13
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    donc il n' y a pas de solution ou faut-il enlever l'option " -f - "
    c@simir

  14. #14
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    L'option -f - signifie : lire les commandes awk dans l'entrée standard.
    Mais ici l'entrée standard est aussi utilisée comme source des lignes à traiter.

    Tu as donc deux solutions :
    • soit tu enregistres tes commandes awk dans un fichier toto et tu utilises l'option -f toto
      soit tu n'utilises pas l'option -f et tu places tes commandes awk après les déclarations de variables
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  15. #15
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    je ne vois pas comment me faut-il placer les commandes aprés awk ?
    c@simir

  16. #16
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Citation Envoyé par vbcasimir
    je ne vois pas comment me faut-il placer les commandes aprés awk ?
    Dans ta ligne de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "sqlplus...!" | awk -f - -v myvar=${user} '{print myvar}'
    -v myvar=${user} est la partie déclaration de variables et '{print myvar}' est la partie commandes awk.
    La commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "sqlplus...!" | awk -v myvar=${user} '{print myvar}'
    a quelques chances de fonctionner correctement...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. Questions sur la commande nohup
    Par cquilgars dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 31/07/2013, 14h36
  2. question sur la commande test
    Par juin29 dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 17/02/2011, 14h44
  3. Les questions sur les commandes Linux
    Par codon21 dans le forum Linux
    Réponses: 6
    Dernier message: 26/03/2009, 22h18
  4. Petite question sur la commande system()
    Par johnnydepp dans le forum C
    Réponses: 19
    Dernier message: 06/05/2007, 17h00
  5. question sur la commande df
    Par Melvine dans le forum Linux
    Réponses: 5
    Dernier message: 27/12/2006, 18h06

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