在awk中计算交易股票的利润

我在shell中有任务,我们也可以使用awk。
我们得到了有关交易记录的文件。它看起来像这样:

2021-07-29 23:43:13;TSM;buy;667.90;USD;306;65fb53f6-7943-11eb-80cb-8c85906a186d
2021-07-29 23:43:15;BTC;sell;50100;USD;5;65467d26-7943-11eb-80cb-8c85906a186d

我们想知道交易的利润。第三列说明股票是买入还是卖出。第四列是每只股票的价格,第六列是股票数量。我试过了,利润应该是 46 122.6 美元,但结果是 0。我是 awk 新手,所以我可能搞砸了语法。

a=$(awk -F ';' 'BEGIN{
    loss=0
    profit=0
    if ($3 == "buy"){
        $loss=($loss + $4*$6)
    } else {
        $profit=(expr $profit + $4*$6)
    }
    {print(profit - loss)}
    }' $FILE)
echo "stonks: $a"

回答

awk -F ';' 'BEGIN{x=0} $3=="buy"{x=x-$4*$6}; $3=="sell"{x=x+$4*$6} END{print x}' file

或者

awk -F ';' 'BEGIN{x=0} $3=="buy"{x-=$4*$6}; $3=="sell"{x+=$4*$6} END{print x}' file

输出:

46122.6

  • Or, `awk -F ';' '{x += $4 * $6 * ($3 == "buy" ? -1 : 1) } END {print x}' file`

以上是在awk中计算交易股票的利润的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>