Bash:根据键汇总一列中的值

啊啊啊22

我有以下结构的日志文件:

DATE:AMZN:209:159.99
DATE:AMZN:300:159.99
DATE:GOOGL:75:552.03
DATE:GOOGL:300:1091.50
DATE:GOOGL:100:199.99
DATE:TSLA:19:9019.99

我想要做的是计算可以在日志文件中找到的每个公司(2. 列)的总数量(3. 列)。所以,这种情况下的结果应该是:

AMZN:509
GOOGL:475
TSLA:19

我尝试使用awkand sort,尽管我对这些实用程序没有太多经验。如果您有任何建议,请在下面留言。

居鲁士

随着awksort

awk 'BEGIN{FS=OFS=":"} {a[$2]+=$3} END{for(i in a){print i OFS a[i]}}' file | sort

有 GNUawk和没有sort

awk 'BEGIN{FS=OFS=":"}{a[$2]+=$3}END{PROCINFO["sorted_in"] = "@val_str_desc"; for(i in a)print i FS a[i]}' file

输出:


亚马逊:509谷歌:475 
TSLA:19

请参阅:8 个强大的 Awk 内置变量——FSOFS、RS、ORS、NR、NF、FILENAME、FNR

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章