Removendo “,” para cálculo e adicionando de volta usando o awk

0

Eu tenho um arquivo como

January 124,567.89
Feburary        234,567.78
March   349,123.77
April   112,248.00
May     107,345.22
June    180,670.23
July    122,457.03
August  345,789.99
September       234,567.90
October 145,890.95
Novemeber       245,789.76
December        111,890.22

Eu tenho a função awk escrita como:

{


removecommas()
}
function removecommas(total)

{
gsub(",","",$2)

total+=$2
return total
}


function addcommas()

{
total=removecommas(total)

return sub(/[1-9]{3}/,"&,") total

}

END{
print addcommas()
}
~

Eu quero adicionar valores $2 , mas antes disso eu quero fazer: -

  • remover vírgulas
  • antes de imprimir, adicione vírgulas e imprima resultados totais

Estou preso: -

  • Como passar resultados de uma função para outra?
  • sub function como fazê-lo funcionar dentro de outra função?

Obrigado

    
por asadz 11.01.2016 / 11:05

1 resposta

1

não diretamente uma resposta, mas inspirada por Mil separador no awk

function addcommas()
{
removecommas(total)
return sprintf ("%'.2f",total) ;
}

ou uma abordagem mais direta

function  addcommas()
{
t2 = total ;
sub(/[1-9]{3}/,"&,",t2) ;
return t2 ;
}

Eu não acho que o awk permitirá o estilo de expressão lambda como sub() arg . sub aplica-se a $0 ou terceiro argumento.

    
por 11.01.2016 / 11:50

Tags