linux中,有一个日志文件,我要统计所有用户消耗的银币数,并打印(print)出来

用awk,而且这日志是按时间记录的,比如用户1,可能在一点钟消耗,在两点也消耗了。用户2也类似,我就是要把他打印出来效果就是:
用户1 消耗...
用户2 消耗...



我这里举个例子

例:你日志文档为g.txt
日志内容为
用户 金币数
1 23金币
1 43金币
3 654金币
2 76金币
1 56金币

使用下面这段就可以实现了
czt g.txt |awk '{golds[$1]=golds[$1]+$NF}END{for(gold in golds){print
gold,golds[gold]}}'

结果展示为:
1 122金币
2 76金币
3 654金币

在这之中$1代表你用户ID那一列 $NF代表金币数那一列(这里使用$NF代表最后一列,如果你是第三列这里使用$3),可以根据自己情况调整追问

因为在金币前一列有正负,怎么把正负考虑在内呢,还有czt应该是cat吧

追答

想问的正负和金币是 -231 +322 这种形式 还是 - 231 + 232 这种形式,符号和数字中间有没空格? 对是cat 打快了,打错了

追问

是- 231这种的 比如金币是第三列,第二列有正负。代表充值还是消费的。

追答

cat g.txt |awk '{golds[$1]=golds[$1]+($2$NF)}END{for(gold in golds){print gold,golds[gold]}}'
这里$2代表正负那一列 $NF代表金币那一列 $1代表用户ID那一列

温馨提示:答案为网友推荐,仅供参考
相似回答