bash - Bash:根据键对一列中的值求和
问题描述
我有具有以下结构的日志文件:
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
我尝试使用awk
and sort
,尽管我对这些实用程序没有太多经验。如果您有任何建议,请在下面发布。
解决方案
awk
和sort
:_
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 特斯拉:19
推荐阅读
- named-entity-recognition - 将命名实体识别格式从 ENAMEX 更改为 CoNLL
- django - 为什么 Django 的工厂男孩在我没有要求的情况下试图创建工厂?
- internet-explorer - 如何在 IE 中使用 target="_blank"?
- unity3d - 如何创建一个可以根据玩家坐标移动的游戏对象
- python - 更改 NumPy 的 FFT 的起点
- android - 三星 S10+ 辅助功能视图焦点问题与 TalkBack 开启
- tensorflow - 运行对象检测训练时的 tf-1.5 或 tf-2.1
- azure - 按名称在 Azure VM 之间进行连接
- c# - 使用 SimpleInjector 在 Startup.cs 中注册 IModel 和 ILogger
- r - 为什么“UseMethod中的错误(“group_by_”):没有适用于“group_by_”的适用方法应用于类“character”的对象”不断弹出?