計算のために「、」を削除し、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.appliesや.appliessubのような$03番目のパラメータを受け入れないと思います。

関連情報