commande bc dans awk

commande bc dans awk - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 28-02-2009 à 11:13:05    

Bonjour à toutes et à tous !
Savez vous s'il est possible d'ajouter la commande "bc" dans du "awk" ?
 
Si oui connaissez-vous la syntaxe ? Car j'ai un probleme :
echo "100 200" | awk '{ convB2($1) }
function(I){
x=$(echo "obase=2; 100" | bc);                                           <-----------Erreur de syntaxe au niveau du pipe
return $x }'
 
Merci si quelqu'un peut m'aider..

Reply

Marsh Posté le 28-02-2009 à 11:13:05   

Reply

Marsh Posté le 28-02-2009 à 11:22:18    

encadre bc par des anti-quote  

`bc`


Combinaison : AltGr 7


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 28-02-2009 à 12:33:43    

L'erreur de syntaxe vient du fait que tu as encadré ton script awk par des simples quote, et que le shell n'évalue pas les variables entre les simple quotes (contrairement aux double quotes). Donc ton $(...) est passé tel quel à awk, qui se chie dessus.
 
Solution :
 
echo "100 200" | awk '{ convB2($1) }
function(I){
x='"$(echo "obase=2; 100" | bc)"';
return $x }'  
 
Ca devrait le faire.

Reply

Marsh Posté le 28-02-2009 à 13:15:49    

Ca marche parfaitement ! Il faut juste remplacer "return $x" par "return x".
Merci beaucoup !!!

Reply

Marsh Posté le 28-02-2009 à 13:36:56    

Juste pour rajouter un peu de piment... :
Êtes-t-il possible d'ajouter une variable qui remplacerait la valeur 100 :
 
echo "100 200" | awk '{ convB2($1) }
function(I){
x='"$(echo "obase=2; I" | bc)"';
return x;
}'  
 
Ca serait vraiment parfais, car avec ce code, "bc" travail avec I et non ce que la variable I contient...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed