ファイルがあります。
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
のような$0
3番目のパラメータを受け入れないと思います。