Como usar variável no printf? [RESOLVIDO]

1. Como usar variável no printf? [RESOLVIDO]

Xerxes
xerxeslins

(usa openSUSE)

Enviado em 06/06/2016 - 16:33h

Considere esta linha:

VAR=3 && awk 'BEGIN { printf "%.0f\n", sqrt(3) }'

Isso resulta em "2". Pois parte da raiz de 3. A variável no começo não exerce função.

Agora considere esta outra linha:

VAR=3 && awk 'BEGIN { printf "%.0f\n", sqrt($VAR) }'

Retorna "0"!!! Eu queria que retornasse 2 também, pois a raiz da variável $VAR deveria ser 2. Já que $VAR vale 3.

Pergunta:

Como fazer o printf usar uma variável nesse caso??

Obrigado quem manja dos paranauês!


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/06/2016 - 16:51h

xerxeslins escreveu:
Considere esta linha:
VAR=3 && awk 'BEGIN { printf "%.0f\n", sqrt(3) }'
Isso resulta em "2". Pois parte da raiz de 3. A variável no começo não exerce função.
Agora considere esta outra linha:
VAR=3 && awk 'BEGIN { printf "%.0f\n", sqrt($VAR) }'
Retorna "0"!!! Eu queria que retornasse 2 também, pois a raiz da variável $VAR deveria ser 2. Já que $VAR vale 3.
Pergunta:

Como fazer o printf usar uma variável nesse caso??
Obrigado quem manja dos paranauês!


Boa tarde, xerxeslins.
É isso que precisa:
VAR=3 && awk 'BEGIN { printf "%.2f\n", sqrt('$VAR') }'
1.73
Ou
VAR=3 && awk 'BEGIN { printf "%.f\n", sqrt('$VAR') }'
2 #COM ARREDONDAMENTO
OBS:
"Dentro do comando awk" use '$VAR', senão não resolve a VAR.

Att.:
Marcelo Oliver



3. Re: Como usar variável no printf? [RESOLVIDO]

Xerxes
xerxeslins

(usa openSUSE)

Enviado em 06/06/2016 - 16:51h

Resolvido com ajuda de Danillo via Telegram.
Mas a resposta escolhida como a melhor também funciona de forma até mais elegante!!!!



Obrigado!


Resposta:

VAR=3 && awk "BEGIN { printf \"%.0f\n\", sqrt($VAR) }"


Usou aspas duplas para poder entender a $VAR e \ depois do printf para não confundir com as aspas dele.
--
# epro mix-in +no-systemd
Linux user #455427
https://goo.gl/uu8OUX


4. Re: Como usar variável no printf? [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/06/2016 - 17:27h

xerxeslins escreveu:

Resolvido com ajuda de Danillo via Telegram.
Mas a resposta escolhida como a melhor também funciona de forma até mais elegante!!!!
Obrigado!

Resposta:
VAR=3 && awk "BEGIN { printf \"%.0f\n\", sqrt($VAR) }"
Usou aspas duplas para poder entender a $VAR e \ depois do printf para não confundir com as aspas dele.
--
# epro mix-in +no-systemd
Linux user #455427
https://goo.gl/uu8OUX

_____________________________________
Por nada, xerxeslins.
Por falar em elegância .... :)

awk '{SQR=sqrt($1);printf "%.f\n" ,SQR}' <<< "3" 

Ou
awk '{SQR=sqrt($1);printf "%.f\n" ,SQR}' <<< "$VAR" 


Att.:
Marcelo Oliver




  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts