Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1125 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [GAWK] Affectation d'une variable dynamique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[GAWK] Affectation d'une variable dynamique

n°222302
slaanesh
Rebellz ken tu nous tiens....
Posté le 01-10-2002 à 14:32:49  profilanswer
 

Question : j'ai un script bash qui me génére une certaine valeur que je voudrais passer après à un script gawk. J'ai lu dans le man de gawk qu'il fallait passer un paramètre dans la ligne de commande du style var=val pour définir dans le script une variable var.
 
donc en gros j'ai fait vite fait un truc du genre :

echo "toto" | gawk 'i=test' '{print $i}'


et j'obtiens ca en retour :

gawk: cmd. line:2: fatal: cannot open file `{print $i}' for reading (No such file or directory)


 
so ??? c'est koa le problème ??


Message édité par slaanesh le 01-10-2002 à 14:34:40

---------------
Ne remets pas à demain ce que tu peux faire après-demain ! :sol:
mood
Publicité
Posté le 01-10-2002 à 14:32:49  profilanswer
 

n°223691
kuroineko
je mamgerais bien un truc la..
Posté le 04-10-2002 à 19:35:52  profilanswer
 

slaanesh a écrit a écrit :

Question : j'ai un script bash qui me génére une certaine valeur que je voudrais passer après à un script gawk. J'ai lu dans le man de gawk qu'il fallait passer un paramètre dans la ligne de commande du style var=val pour définir dans le script une variable var.
 
donc en gros j'ai fait vite fait un truc du genre :

echo "toto" | gawk 'i=test' '{print $i}'


et j'obtiens ca en retour :

gawk: cmd. line:2: fatal: cannot open file `{print $i}' for reading (No such file or directory)


 
so ??? c'est koa le problème ??




 
 
tu peux pas faire comme ca
echo "toto" | awk .... ou gawk.....
c'est sur le echo "toto"  
donc tu peux faire  
echo "toto"
awk '{..}'
 
 
 
ta variable ne marche pas car $i represente si i est un chiffre un # de colonne dans l'affichage de ce qui sort de la commande avant le |
 
la seule solution c'est ca :

echo "toto" | gawk '{i="titi"; print i}'


notes que le echo "toto" est totalement inibe par le awk puisqu'il ne l'analyse meme pas. (normal tu ne le lui demande pas).
 

zfr11opt:/home/operator#echo "toto" | awk '{i="titi"; print i}'
titi
zfr11opt:/home/operator#
zfr11opt:/home/operator#echo "toto" && \
> echo "toto" | awk '{i="titi"; print i}'
toto
titi
zfr11opt:/home/operator#    
 


 
alors pourquoi le metre ? si toto ne s'qffiche pas ?
parceque sinon il ne t'affiche titi que sur frappe de validation (enter) et en boucle infinie.


Message édité par kuroineko le 04-10-2002 à 19:53:07

---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
n°223702
kuroineko
je mamgerais bien un truc la..
Posté le 04-10-2002 à 20:48:18  profilanswer
 

kuroineko a écrit a écrit :

 
 
 
tu peux pas faire comme ca
echo "toto" | awk .... ou gawk.....
c'est sur le echo "toto"  
donc tu peux faire  
echo "toto"
awk '{..}'
 
 
 
ta variable ne marche pas car $i represente si i est un chiffre un # de colonne dans l'affichage de ce qui sort de la commande avant le |
 
la seule solution c'est ca :

echo "toto" | gawk '{i="titi"; print i}'


notes que le echo "toto" est totalement inibe par le awk puisqu'il ne l'analyse meme pas. (normal tu ne le lui demande pas).
 

zfr11opt:/home/operator#echo "toto" | awk '{i="titi"; print i}'
titi
zfr11opt:/home/operator#
zfr11opt:/home/operator#echo "toto" && \
> echo "toto" | awk '{i="titi"; print i}'
toto
titi
zfr11opt:/home/operator#    
 


 
alors pourquoi le metre ? si toto ne s'qffiche pas ?
parceque sinon il ne t'affiche titi que sur frappe de validation (enter) et en boucle infinie.




 
ou plus proprement :

zfr11opt:/home/operator#echo "toto" | awk '{i="titi"; print i " "$1}'
titi toto
zfr11opt:/home/operator#      


echo "toto" | awk '{i="titi"; print i " "$1}'
 
i="titi"; declarer i et lui attribuer une valeur.
print i afficher la valeur contenue dans i
" "$1 afficher la valeur contenue dans la 1ere colone trouvee affichee par la commande avant le | dans notre exemple echo "toto" donc resultat affiche toto...
 
le " " c'est juste pour faire un espace pour eviter le tititoto
erreur habituelle...


Message édité par kuroineko le 04-10-2002 à 20:49:17

---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
n°223706
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 04-10-2002 à 21:02:22  profilanswer
 

tu ferais mieux d'ecrei des scripts en entier plutot que de filez une ligne de commande


---------------
du bon usage de rand [C] / [C++]
n°223852
kuroineko
je mamgerais bien un truc la..
Posté le 05-10-2002 à 09:19:19  profilanswer
 

Taz@PPC a écrit a écrit :

tu ferais mieux d'ecrei des scripts en entier plutot que de filez une ligne de commande




 
c'est rigoureusement la meme chose en terme de commande.
 
le reste du script ne lui a pas pose probleme.
d'apres sa demande.

n°223861
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 05-10-2002 à 10:52:31  profilanswer
 

ca evite de se prendre la tete avec les single, double et back quotes


---------------
du bon usage de rand [C] / [C++]
n°223868
kuroineko
je mamgerais bien un truc la..
Posté le 05-10-2002 à 11:14:07  profilanswer
 

Taz@PPC a écrit a écrit :

ca evite de se prendre la tete avec les single, double et back quotes




 
c'est justement l'inverse.
 
la preuve
 

kneko@linux:~> cat > test
#!/bin/sh
resultat=`echo "toto" | awk '{i="titi"; print i " "$1}' `
echo $resultat
kneko@linux:~> chmod 700 test
kneko@linux:~> ./test
titi toto
kneko@linux:~> rm test
kneko@linux:~>


 
excuse moi du peu mais il y a bien 2 back-quotes en plus...
 
dans ce cas tres precis ca ser a rien de definir resultat ok,
mais dans un script vrraiment utile oui.
par exemple mise en forme de tableau un fichier log en en selectionnant que les informations determinantes si tu passe pas par une variable jamais tu vas y arriver et la tu as besoin de

  • ` delimiter la commande dont le resultat serra dans la variable  
  • " pour les chaines utilisees dans la commande pour eviter tout problemes
  • et des ' selon les commandes awk '{...}' le necessite par exemple...


Eviter une syntaxe desagreable a taper c'est bon pour s'amuser mais pas efficace et je suis helas bien place pour en parler a me prendre la tete sur
des scripts VMS,UNIX des OBEY files sur Tandem, et autres batchs DOS, sources C++, perl, gforth etc je garantie que bien souvent des syntaxes tres chiantes sont bien les moins gourmandes en memoire d'une part mais aussi souvent les plus rapides...
 
A part le cote ludique des jeux comme

  • taper tout ton source sans le caractere A
  • avec la syntaxe la plus simple possible
  • avec la pire syntaxe possible
  • ...

et autre amusements du genre que je fais faire a mes "eleves" de temps en temps et que j'ai moi meme fais quand j'etais etudiant, ca n'a aucun interet.


Message édité par kuroineko le 05-10-2002 à 11:21:16

---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
n°223901
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 05-10-2002 à 12:33:20  profilanswer
 

je parle d'un script awk, pas sh


---------------
du bon usage de rand [C] / [C++]
n°223918
kuroineko
je mamgerais bien un truc la..
Posté le 05-10-2002 à 13:24:17  profilanswer
 

Taz@PPC a écrit a écrit :

je parle d'un script awk, pas sh




 
desole mais le matin j'ai le cerveau embrouille....surtout le samedi.


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
n°223960
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 05-10-2002 à 16:04:36  profilanswer
 

:sarcastic:


---------------
du bon usage de rand [C] / [C++]

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [GAWK] Affectation d'une variable dynamique

 

Sujets relatifs
Erreur de variable !!??!!?? [résolu]separation en plusieur d'une variable
[Flash] Recuperer une variable passée dans l'URL ?[C] Problèmes d'allocation dynamique ?
Y'aurait t'y moyen de déterminer le type d'une variable?[PHP + JS] Mettre une variable Javascript dans du code PHP...
[PHP] Un nom de variable variable ?Variable système et WSH...
Stocker un ObjectConnection dans une variable d'application[HTML,JS] Popup, et perte de variable...
Plus de sujets relatifs à : [GAWK] Affectation d'une variable dynamique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR