Utiliser des variables Bash dans Awk

Résolu
allergen -  
 Konrad -
Bonjour,


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

Merci

6 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
Konrad
 
Cool jipicy!!!
0
allergen
 
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
fati
 
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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
fati
 
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
awk '$2 ~ /'"$var"'$/ { print $0 }'
0
fati
 
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Affiche ton fichier, peut être faut-il changer le séparateur par défaut ;-\
0
fati
 
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Et tu voudrais afficher quoi exactement ?
0