awk 分组求和

分组求和
awk  '{s[substr($2,1,6)] += $1} END{for(i in s) {print i, s[i]/(1024*1024*1024)} }' file_to_read.txt |sort -n

这里面用到了awk的知识和字典的知识。AWK 中需要了解的就是$N 代表所读取内容的第N 列。

可能有人对字典不太了解. s={'name':'halberd'} ,这就是一个字典,是Key-value的组合。

在上面的字典示例中,key 是 'name',value 是 'halberd'。s[name] 的值 就是 'halberd'。

返回上面的AWK示例, s[substr($2,1,6)] += $1 代表把文件 file_to_read.txt 每行中第二列的前6个字符作为 字典 s 的key 。

当substr($2,1,6) 的值第一次出现时,s[substr($2,1,6)] = $1。

当substr($2,1,6) 的值重复出现时时, s[substr($2,1,6)] += $1 代表,把$1 的值 加到 原来s[substr($2,1,6)]上,也就是s[substr($2,1,6)] = s[substr($2,1,6)] + $1。通过字典的管理方式,进行数据的求和。

file_to_read.txt 部分内容如下:

.........
1125017 20180820174000
277 20180820174000
1491471 20180820175000
663 20180820175000
1429371 20180920170000
3716506 20181020170000
21055029 20181020170000
2218546 20181020171000
4650637 20181020174000
23847465 20181020174000
5341238 20181020175000
24666314 20181020175000
1621883 20181120170000
20620952 20181120170000
1756716 20181120171000
21409188 20181120171000
23085774 20190920174000
1126625 20190920175000
24564610 20190920175000
583910 20191020170000
22511935 20191020170000
921893 20191020171000
23906308 20191020171000
629943 20191020172000
25916302 20191020172000
1063984 20191020173000
25617169 20191020173000
780478 20191020174000
................
结果示例
201808 2.50172
201809 6.61726
201810 66.528
201811 84.6913
201812 91.871
201901 115.439
201902 124.768
201903 115.127
201904 91.7492
201905 93.8242
201906 92.1708
201907 83.1374
201908 95.1076
201909 85.789
201910 80.9189

Author: halberd.lee

Created: 2019-10-28 Mon 17:30

Validate

awk 分组求和的更多相关文章

  1. Oracle函数over(),rank()over()作用及用法--分区(分组)求和& 不连续/连续排名

    (1)   函数:  over()的作用及用法:    -- 分区(分组)求和. RANK ( ) OVER ( [query_partition_clause] order_by_clause )D ...

  2. linq分组求和_实体类和datatable

    1.数据分组求合,分别用的实体类以及datatable来分组求合,还有分组求和之后的如何取值 //实体类版本 List<ProgramTimeModel> TotalAllList = G ...

  3. Oracle分析函数及常用函数: over(),rank()over()作用及用法--分区(分组)求和& 不连续/连续排名

    (1)   函数:  over()的作用及用法:    -- 分区(分组)求和. sum() over( partition by column1 order by column2 )主要用来对某个字 ...

  4. Mysql分组求和&LIMIT

    分组求和mysql> SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY na ...

  5. JDK8:Lambda根据 单个字段、多个字段,分组求和

    使用lambda表达式分别 根据 单个字段.多个字段,分组求和 示意图: 1.根据 单个字段,分组求和:根据2019这个字段,计算一个list集合里,同属于2019的某个字段累加和 2.根据 多个字段 ...

  6. 查询统计SQL分组求和使用小技巧

    我们在做查询统计时,肯定会遇到将查询结果再次分组求和这种需求,但是往往查询的sql本身就比较复杂,再使用分组函数不太可能,那么这时候我们就想到了用临时表的办法,通过联合临时表我们就可以获得想要的分组求 ...

  7. java8 stream自定义分组求和并排序

    public static void main(String[] args) { List<GroupDetailDTO> list = new ArrayList<>(); ...

  8. Excel+Python:分组求和

    Excel选中区域,排除序号.姓名等列,复制Ctrl+C. Python,import pandas as pd,读取剪切板并赋值给变量df,df.groupby('部门').sum().若要避免部门 ...

  9. Laravel/Lumen 分组求和问题 where groupBy sum

    在Laravel中使用分组求和,如果直接使用Laravel各数据库操作方法,应该会得出来如下代码式: DB::table('table_a') ->where('a','=',1) ->g ...

随机推荐

  1. RabbitMQ的特点与应用场景(二)

      1.RabbitMQ的主要特点 (1)可靠性:RabbitMQ可通过队列持久化,交换机持久化,消息持久化及ACK回应等机制保证可靠性 (2)支持多种语言与协议:RabbitMQ几乎支持所有的编程语 ...

  2. win10 增加一个新磁盘

    1.右键我的电脑,选择管理 可以看到C盘的空间相比较大,拿出来250G的空间做成E盘 2.选择OS(C:),右键,压缩卷,请稍后,点击压缩 3.此刻会看到,有一块黑色区域就是新建的未分配空间,这时我们 ...

  3. django框架—终端命令

    创建一个虚拟环境:在虚拟环境中创建项目目录 cd到项目根目录 创建项目:django-admin startproject "项目名称" 创建app:python manage.p ...

  4. 【异常】hbase启动后hdfs文件权限目录不一致,导致Phoenix无法删除表结构

    1 异常信息 Received error when attempting to archive files ([class org.apache.hadoop.hbase.backup.HFileA ...

  5. python+selenium之——错误:selenium.common.exceptions.WebDriverException: Message: ‘geckodriver’ executable needs to be in PATH.

    此时,需要自己配置geckodriver 下载geckodriver,地址:https://github.com/mozilla/geckodriver/releases 下载后解压得到geckodr ...

  6. tnsnames.ora配置细节注意

    WXPT = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.250)(PORT = 1521) ...

  7. mybatis详解(三)

    一,动态sql,where,trim,set和foreach parameterType的属性可以不用写 xml文件sql的书写 <select id="queryByParams&q ...

  8. 洛谷P4983 忘情 (WQS二分+斜率优化)

    题目链接 忘情水二分模板题,最优解对划分段数的导数满足单调性(原函数凸性)即可使用此方法. 详细题解洛谷里面就有,不啰嗦了. 二分的临界点让人有点头大... #include<bits/stdc ...

  9. 【bfs分层图 dp】hihocoder#1147 : 时空阵

    最短路径树上分层dp的一类套路吧 题目大意 幽香这几天学习了魔法,准备建造一个大型的时空传送阵. 幽香现在可以在幻想乡的n个地点建造一些传送门,如果她建造了从地点a与地点b之间的传送门,那么从a到b和 ...

  10. 多种view视图和序列化--django2

    models.py from django.db import models # Create your models here. class Idc(models.Model): name = mo ...