Utiliser des variables Bash dans Awk

Résolu
Bonjour,

Est-il possible d'utiliser des variabes bash dans les fonctions awk?

Merci
Configuration: Linux
Firefox 2.0.0.14

6 réponses

  1. Contributeur
    oui
    awk '{...}' var1=$var1 var2=$var2
    utiliser var1 et var2 dans le code
    ou
    awk '{...'"$var1"'...}'

    ou
    utiliser le tableau ENVIRON
    ENVIRON
    An array containing the values of the current environment. The array is indexed by the environment variables, each element being the value of that variable (e.g., ENVIRON["HOME"] might be /home/arnold). ...
    9
    1. Merci pour ta réponse.
      en plus je veux tester le var sur un champs (numéro 2 dans le fichier), je vais comment stp ?
      Merci
      0
      1. Contributeur
        awk '$2 ~ /'"$var"'$/ { print $0 }'
        0
      2. Merci.
        pour êtrte franc ça n'a pas marcher toujours il y ades résulats en plus
        exeple je cherche 94 dans $2 je trouve : 94, 0994, 09947 ...
        MErci
        0
      3. Contributeur
        Affiche ton fichier, peut être faut-il changer le séparateur par défaut ;-\
        0
      4. QoS__Ohrigstad-06994_vtot-0023-ohrigstad-ce-1,6994,229.69987679211474
        QoS__Cairo-Egypt-06949_R-EP-CAIRO,694,95.58529345878135 126.60342741935483
        QoS__Nyscayah-Monitoring_tfe-06947-rm-01,94,8.4571572580645
        QoS__Teheran-05694_R-EP-05694-TEHERAN-01,5694,637.305823398784

        awk -F="," '/'"$ligne"'$/ { print $0 }' /home/l0360167/REPORTINGWAN/INPUT/rtt.csv >>temprtt.txt
        $ligne corrspend par exemple à la valeur 94
        et je trouve tous les lignes qui sont en dessus
        Merci
        0
      5. Contributeur
        Et tu voudrais afficher quoi exactement ?
        0
    2. Contributeur
      hello
      $ cat a2  
      Bonjour,  
      Est-il possible d'utiliser des variabes bash dans les fonctions awk?  
      Merci  
      Configuration: Linux  
      Configuration: Linuxtest  
      Firefox 2.0.0.14  
      $   
      $ var="Linux"  
      $ awk '/'"$var"'$/ { print $0 }' a2  
      Configuration: Linux  
      $  
      ou
      $ awk -v var=$var '$0 ~ var "$" { print $0 }' a2 
      Configuration: Linux 
      $  
      
      0
      1. Bonjour,
        [tmpfs]$ awk '/'"$var"'/ { print $0 }' plop --> marche sans soucis
        mais si par exemple dans le fichier :

        Bonjour,
        Est-il possible d'utiliser des variabes bash dans les fonctions awk?
        Merci
        Configuration: Linux
        Configuration: Linuxtest
        Firefox 2.0.0.14

        il affiche:

        Configuration: Linux
        Configuration: Linuxtest

        où j'ai besoin que de la ligne contenant linux seulement (j'ai utilisé ^ et $) mais j'ai pas pu savoir l'emeplacement exacte de ce deux options pour récupérer la chaîne exacte.
        MErci de votre aide
        0
        1. Contributeur
          Salut,

          Il faut utiliser une expression rationnelle comme "\>", qui correspond à une chaîne vide à la fin d'un mot :

          $ cat plop 
          Bonjour,
          Est-il possible d'utiliser des variabes bash dans les fonctions awk?
          Merci
          Configuration: Linux
          Configuration: Linuxtest
          Firefox 2.0.0.14
          
          $ var=Linux
          
          $ awk '/'"${var}\>"'/ { print $0 }' plop
          Configuration: Linux
          
          $

          ;-))
          0
      2. Merci de votre aide

        Le probleme est résolu
        j'ai pu voir aussi que awk -v varAWK=&varBash '{action}' "file" marche aussi

        Bref l'embaras du choix

        ++
        2
        1. Modérateur
          Salut,

          Oui, mais il faut soit les déclarer en début du programme "awk" avec l'option "-v variable_awk=$variable_shell" comme expliqué par "dubcek", soit les placer à l'extérieur des quotes entourant la commande "awk".
          Exemple pour la seconde solution :
          [tmpfs]$ cat plop
          Bonjour,
          Est-il possible d'utiliser des variabes bash dans les fonctions awk?
          Merci
          Configuration: Linux
          Firefox 2.0.0.14
          
          [tmpfs]$ var="Linux"
          
          [tmpfs]$ awk '/'"$var"'/ { print $0 }' plop
          Configuration: Linux
          ;-))
          3
          1. Cool jipicy!!!
            0