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

Oth*_*n27 2 shell 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
Run Code Online (Sandbox Code Playgroud)

我们想知道交易的利润。第三列说明股票是买入还是卖出。第四列是每只股票的价格,第六列是股票数量。我试过了,利润应该是 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"
Run Code Online (Sandbox Code Playgroud)

Cyr*_*rus 5

awk -F ';' 'BEGIN{x=0} $3=="buy"{x=x-$4*$6}; $3=="sell"{x=x+$4*$6} END{print x}' file
Run Code Online (Sandbox Code Playgroud)

或者

awk -F ';' 'BEGIN{x=0} $3=="buy"{x-=$4*$6}; $3=="sell"{x+=$4*$6} END{print x}' file
Run Code Online (Sandbox Code Playgroud)

输出:

46122.6

  • 或者,`awk -F ';' '{x += $4 * $6 * ($3 == "购买" ? -1 : 1) } END {print x}' 文件` (2认同)