删除“,”进行计算并使用 awk 将其添加回来

删除“,”进行计算并使用 awk 将其添加回来

我有一个文件

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

我将 awk 函数写为:

{


removecommas()
}
function removecommas(total)

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

total+=$2
return total
}


function addcommas()

{
total=removecommas(total)

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

}

END{
print addcommas()
}
~

我想添加值$2,但在此之前我想做:-

  • 删除逗号
  • 在打印之前添加逗号并打印总结果

我被困住了:-

  • 如何将一个函数的结果传递给另一个函数?
  • sub function如何让它在另一个函数中运行?

谢谢

答案1

不是直接答案,而是受到启发awk 中的千位分隔符

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

或者更直接的方法

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

我不认为 awk 会允许像sub() arg.sub适用于$0或第三个参数。

相关内容