shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Passar variável do shell para o AWK


From: phfbettega
Subject: Re: [shell-script] Passar variável do shell para o AWK
Date: Thu, 3 Aug 2017 00:43:03 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1

Olá Dito, funcionou colocando ENVIRON["n3"] 'no meio' do formato do printf.
Abraços Paulo

div_awk(){
n1=$1;n2=$2;n3=$3;export n1 n2 n3
divisao=$(awk 'BEGIN {printf "" ENVIRON["n1"] "/" ENVIRON["n2"] "=" "%."ENVIRON["n3"]"f\n", ENVIRON["n1"] / ENVIRON["n2"]; print "(com "ENVIRON["n3"] ""; print "casas decimais.)"}')
echo $divisao;}

$ div_awk 20 3 3
20/3=6.667 (com 3 casas decimais.)

$ div_awk4 20 3 7
20/3=6.6666667 (com 7 casas decimais.)

ou com a opção -v
div_awk(){
divisao=$(awk -v n1=$1 -v n2=$2 -v n3=$3 'BEGIN {printf "" n1 "/" n2 "=" "%."n3"f\n", n1/n2; print "(com "n3 ""; print "casas decimais.)"}')
echo $divisao;}

$ div_awk 10 3 4
10/3=3.3333 (com 4 casas decimais.)


On 02-08-2017 20:52, Dito Ramos address@hidden [shell-script] wrote:
Olá, Mestres.
Estou "desenferrujando" meus conhecimentos sobre AWK.
Então preciso da ajuda de quem puder.
Meu script:

#!/bin/bash

# USANDO O AWK PARA DIVIDIR E FORMATAR CASAS DECIMAIS DE VALORES PASSADOS POR 
VARIÁVEIS DO SHELL
# SINTAXE: ./myscript.sh $1 $2 $3
# Onde: $1=Dividendo
#       $2=Divisor
#       $3=Número de casas decimais do retorno

# BEGIN ####

clear
n1=$1
n2=$2
n3=$3
export n1
export n2
export n3
echo ""
divisao=$(awk 'BEGIN {printf "" ENVIRON["n1"] "/" ENVIRON["n2"] "=" "%.5f\n", ENVIRON["n1"] / ENVIRON["n2"] ; print "(com "ENVIRON["n3"] ""; print "casas decimais.)"}')
echo "Sintaxe passada: ./my_script $1 $2 $3"
echo ""
echo "Retorno: " $divisao
echo ""

# END ####

Meu problema:
Tentei, de todas as formas, passar a variável $3 para o trecho "%.5f\n", mas 
não consigo.
Pergunto: podem ajudar sobre como concatenar a variável passada no SHELL, no 
comando AWK?

Grato desde já.

Dito Ramos


--------------------------------------------------------------------------------------------------------------
Enviado por: Dito Ramos <address@hidden>
--------------------------------------------------------------------------------------------------------------


reply via email to

[Prev in Thread] Current Thread [Next in Thread]