Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Utilisation d'une variable dans une regex de awk

Je cherche désespérément comment intégrer un mot passé en variable dans une regex de awk. J'ai bien ecrit -v champrecheche="$2" dans la commande awk, mais ensuite, comment l'insérer dans la regex pour l'utiliser? (?)

Poste le Thursday 6 March 2008 18:03:31
Répondre     Citer    
Re: Utilisation d'une variable dans une regex de awk
Envoyé par: oudoubah

Tu appelles awk dans un script ou directement?

Dans le cas d'un script, il y a une solution de contournement.

Sinon tu peux le faire de telle manière
{ if ( $0 ~ champrecherche ) {
...
}
}

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Thursday 6 March 2008 18:50:00
Répondre     Citer    
Re: Utilisation d'une variable dans une regex de awk

C'est dans un script, le paramètre vient de la ligne de commandes au départ :chef:
Je vais essayer ce que tu m'as donné :hat: .

Poste le Friday 7 March 2008 11:39:53
Répondre     Citer    
Re: Utilisation d'une variable dans une regex de awk
Envoyé par: bheadman

Est-ce-que tu as résolut ton problème ?? car j'essaie de me former au bash et j'utilise énormément awk (nawk aussi car je suis sous sun solaris) et donc je lit un peu tout ce qui traine.

sinon voici un exemple (si j'ai bien compris)

#!/bin/bash

read -p "Quel est le mot de passe : " passwd

awk -v var=${passwd} '{ print "Le mot de passe est "var }'


Poste le Wednesday 26 March 2008 18:49:28
Répondre     Citer    
Re: Utilisation d'une variable dans une regex de awk
Envoyé par: bheadman

correction :

#!/bin/bash

read -p "Quel est le mot de passe : " passwd

echo "Le mot de passe est " | awk -v var=${passwd} '{ print $0var }'

Poste le Wednesday 26 March 2008 19:00:44
Répondre     Citer    
Re: Utilisation d'une variable dans une regex de awk
Envoyé par: bheadman

voici ce que cela pourrais donnée dans un shell (tu peut rentrer directement la ligne de commande sans le "$" au début cela devrait fonctionner)

$ popo=paswd; echo "le machin est " | awk -v var=$popo '{ print $0var }'
le machin est paswd

Poste le Wednesday 26 March 2008 19:02:19
Répondre     Citer    
Re: Utilisation d'une variable dans une regex de awk

Ce n'est pas afficher la variable qui me posait problème, mais l'insérer dans la regex :censored:

Poste le Thursday 27 March 2008 11:12:16
Répondre     Citer    
Re: Utilisation d'une variable dans une regex de awk
Envoyé par: bheadman

Citation
Stéphane Ascoët
Ce n'est pas afficher la variable qui me posait
problème, mais l'insérer dans la regex


Cela je l'ai bien compris, mais mon exemple ne pouvais pas être abstrait il fallait le mettre en oeuvre et la façon la plus simple est le ECHO.

Poste le Monday 31 March 2008 14:00:33
Répondre     Citer    
Re: Utilisation d'une variable dans une regex de awk
Envoyé par: bheadman

sinon je te donne un exemple concret :

for Part in $Partsrc
do
grep INBOX ${DataListDir}/mboxutil_$Stsrc.txt |grep partition$Part |awk '{print $2, $NF}' |sort -rn | nawk -v x=$Giga 'somme<x*1048576 {somme+=$1;print $2}' |sed 's/user\///' | sed 's/\/INBOX//' | nawk -v y=$Partdst '$1!~/@/{$1=$1"@neuf.fr"}; {print $1"#"y}' >> ${DeplacementDir}/Liste_$Partscript"_"$Partdst.script
done

voilou

Poste le Monday 31 March 2008 14:11:29
Répondre     Citer    
Re: Utilisation d'une variable dans une regex de awk

Oulà, c'est bien compliqué ton truc :hat: Mais ne t'inquiètes pas, de toute façon ce script est fini et utilisé en production depuis longtemps ^^D-*

Poste le Monday 31 March 2008 14:24:22
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Utilisation d'une variable dans une regex de awk
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons