我手头上有三个文件,他们的格式都是一样的,总共5列.如果我想求他们的并集,并且如果前三列相同第四列的数字相加,第五列信息合并.我尝试用多维哈希去做,可是结果并不齐全.应该怎么做呢?
以下是文件格式:
____________________________________________________________________________________
1.505.txt
WINGS 1000 4000 3 3/20_505
WINGS 5000 6000 8 8/20_505
SANLY 2000 4000 9 9/20_505
TINAG 8000 10000 11 11/20_505

2.707.txt
WINGS 1000 4000 3 3/18_707
ANNY 4000 7000 4 4/18_707
MOLLY 3000 4300 5 5/18_707
TINAG 8000 10000 6 6/18_707

3.808.txt
VEELY 2000 4000 4 4/20_808
WINGS 5000 6000 5 5/20_808
ANNY 4000 7000 9 9/20_808
TINAG 8000 10000 4 4/20_808

__________________________________________________________________________________________
结果是:

WINGS 1000 4000 6 3/20_505;3/18_707
WINGS 5000 6000 13 8/20_505;5/20_808
SANLY 2000 4000 9 9/20_505
TINAG 8000 10000 2111/20_505;6/18_707;4/20_808
ANNY 4000 7000 13 4/18_707;9/20_808
MOLLY 3000 4300 5 5/18_707
VEELY 2000 4000 4 4/20_808

_____________________________________________________________________________________________

 1 perl comb.pl 505.txt 707.txt 808.txt
 2
 3 use strict;
 4 use warnings;
 5
 6 my %hSeg;
 7 my @aKey;
 8
 9 my $sCnt = 0;
10 while(<>){
11   $sCnt++;
12   chomp;
13   my @aData = split;
14   if(@aData != 5){
15     print "Line $sCnt error: $_\n";
16     next;
17   }
18   my $sKey = "@aData[0..2]";
19   if(exists $hSeg{$sKey}){
20     $hSeg{$sKey}{val} += $aData[3];
21     $hSeg{$sKey}{str} .= ";$aData[4]";
22   }
23   else{
24     push @aKey, $sKey;
25     $hSeg{$sKey}{val} = $aData[3];
26     $hSeg{$sKey}{str} = $aData[4];
27   }
28 }
29
30 foreach(@aKey){
31   print "$_ $hSeg{$_}{val} $hSeg{$_}{str}\n";
32 }
33 -----------------------------------------------------------------------
34 也可以:
35 awk '{n=$1FS$2FS$3; a[n]+=$4; b[n]?b[n]=b[n]";"$5:b[n]=$5}END{for (i in a)print i,a[i],b[i]}' 505.txt 707.txt 808.txt 

转载于:https://www.cnblogs.com/huang6894/p/3471722.html

awk和perl对多文本进行统计(求他们的并集,并且如果前三列相同第四列的数字相加,第五列信息合并)...相关推荐

  1. 各国家域名总量统计排名:美国德国中国居前三

    中国IDC评述网12月27日报道:近日,据WebHosting.info公布的数据显示,截至2012年12月24日,全球各国家域名注册总量统计Top10中,美国以79,703,631个域名总数持续稳居 ...

  2. 各国家域名总量统计Top10:美国德国中国居前三

    中国IDC评述网01月05日报道:近日,据WebHosting.info公布的数据显示,截至2012年12月31日,全球各国家域名注册总量统计Top10中,美国以79,624,004个域名总数蝉联第一 ...

  3. Linux的文本字段统计方法

    Linux的文本字段统计方法 一.环境介绍 二.目的及要求 三.实际操作 一.环境介绍 二.目的及要求 三.实际操作 一.环境介绍 1.linux版本为RHEL8.0版本 2.使用权限为root账号权 ...

  4. Linux-京东字节百度提前批,一面二面都被问到了awk——实例篇(2)去重统计排序

    去年提前批我投了京东.字节和百度,一面,二面都被问到了awk,如果你会,并且还很熟悉,那肯定算是一个加分项了!好感度up up up! 基本原理本篇不再赘述.请阅读: 总结了200篇面经中的awk面试 ...

  5. Python_note6 组合数据类型+jieba库+文本词频统计

    集合类型和操作 集合元素不可修改,由不可变数据类型组成,元素不可重复 a = {"python",123,("python",123)}使用{}建立集合 b = ...

  6. Python实例--文本词频统计

    最近在MOOC跟着北京理工大学的嵩天老师学习Python(https://www.icourse163.org/learn/BIT-268001?tid=1003243006#/learn/annou ...

  7. Python项目实践:文本词频统计、软文的诗词风

    一.文本词频统计 # CalHamletV1.py def getText():txt = open("C:/Users/520/Desktop/Hamlet.txt", &quo ...

  8. python哈姆雷特词频统计_python—文本词频统计 哈姆雷特 txt 下载

    原博文 2020-05-13 15:49 − 文本词频统计 -- Hamlet Hamlet下载 链接:https://pan.baidu.com/s/1Is2mBAED57i6nI38lcnXAA ...

  9. Python文本词频统计

    背景信息 本文实现英文文本词频统计,功能与Mapreduce中的wordcount是类似的.本文主要是为之后词向量训练做准备工作. 本地实现词频统计函数,输入一个文本文件,最终以dict的形式返回词频 ...

  10. 在线文本去重统计工具

    在线文本去重统计工具 在线文本去重统计工具 本工具支持对以回车换行分隔的字符串进行数据项重复检查和去重操作,可以分析重复出现2次及以上的数据项,并且整理一份没有重复数据项的数据列表,数据纯客户端实时计 ...

最新文章

  1. HTML学习02之基础;元素;属性
  2. 携程基于Storm的实时大数据平台实践
  3. css控制div等比高度
  4. 百度网盘直接解析高速下载文件源码
  5. 走进我的交易室06_交易
  6. GNS3+winPcap+wireshark的安装步骤
  7. 史上最全的画册制作流程—设计前的策划
  8. Watir的操作使用
  9. OkHttp自定义拦截器实现内外服务器多地址配置且请求失败自动切换地址
  10. SAP - VL10B 执行采购订单,没有采购订单信息问题
  11. matlab实现通信系统,香农定理的介绍
  12. 【真相】ChatGPT和OpenAI的API KEY
  13. 人脸检测——RetinaFace解读
  14. matlab怎么求三次微分,Matlab – 求解三阶微分方程
  15. 在线教育网站的一些瞎折腾……
  16. 与古人有关......
  17. 本周大新闻|128GB版Quest 2再降价,Mojo Vision完成“新A轮”融资
  18. php 下一年,php获取一年有多少天
  19. 封BT的一些常见用法
  20. 【SDX65】WCN6856启动出现系统崩溃问题

热门文章

  1. Vue学习--MVVM模型
  2. Redis面试必看40题
  3. vxp grandle 自动更新应用
  4. Java设计模式之单例(Singleton)模式解析
  5. SpringBoot优缺点总结
  6. 旋转链表 Java,leetcode 旋转链表 Java
  7. Excel文件导入mysql数据库
  8. python自动化读取和写入文件_基于Python的接口自动化读写excel文件的方法
  9. arraylist 初始化_ArrayList 和 LinkedList 哪个更占空间?
  10. Java编程:弗洛伊德算法(无向图所有顶点最小路径)