免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1613 | 回复: 5
打印 上一主题 下一主题

四组hash,有相同键的hash打印出来 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-17 16:51 |只看该作者 |倒序浏览
如:hash1
前两列是键,后三列是值
a1   +   10   20   ab
a1   -    5     10   ac
a2   +   14   25    --
a2   -   52   17    ++

hash2
a1    +   15   27   gh
a1    -     8    2     ac
a2    +    3    50    --
a3    -    52   17   ++
a4    -     8    2     ac
a5    +    3    50    --
a6    -    52   17   ++

hash3
aa    +   15   27   gh
ab    -     8    2     ac
a1   +    3    50    --
a2    -    52   17   ++

hash4
a1    +   15   70   gh
a1    -     8    2     ac
a2    +    3    50    --
a3    -    52   17   ++

并且要求 第四列,hash2的值<=hash3的值<=hash4的值<=hash5的值

所以输出:
a1   +   10   20   ab   (hash1)
a1    +   15   27   gh   (hash2)
a1   +    3    50    --   (hash3)
a1    +   15   70   gh   (hash4)

大侠~帮帮我吧~感激啊~

论坛徽章:
0
2 [报告]
发表于 2012-12-17 17:44 |只看该作者
自己解决了。。。

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
3 [报告]
发表于 2012-12-18 14:02 |只看该作者
练习练习:
  1. #!/usr/bin/perl
  2. my %h;
  3. while (<DATA>) {
  4.     my @a = split;
  5.     push @{$h{"@a[0,1]"}}, [$a[3], $_];
  6. }
  7. print map { $_->[1] } sort { $a->[0] <=> $b->[0] } @{$h{$_}}
  8.         for sort keys %h;
  9. __DATA__
  10. a1   +   10   20   ab
  11. a1   -    5     10   ac
  12. a2   +   14   25    --
  13. a2   -   52   17    ++
  14. a1    +   15   27   gh
  15. a1    -     8    2     ac
  16. a2    +    3    50    --
  17. a3    -    52   17   ++
  18. a4    -     8    2     ac
  19. a5    +    3    50    --
  20. a6    -    52   17   ++
  21. aa    +   15   27   gh
  22. ab    -     8    2     ac
  23. a1   +    3    50    --
  24. a2    -    52   17   ++
  25. a1    +   15   70   gh
  26. a1    -     8    2     ac
  27. a2    +    3    50    --
  28. a3    -    52   17   ++
复制代码

论坛徽章:
0
4 [报告]
发表于 2012-12-20 18:11 |只看该作者
回复 3# rubyish


    嘿嘿~还是谢谢你~

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
5 [报告]
发表于 2012-12-25 19:33 |只看该作者
  1. [root@centos ~]# cat urfile
  2. a1   +   10   20   ab
  3. a1   -    5     10   ac
  4. a2   +   14   25    --
  5. a2   -   52   17    ++

  6. hash2
  7. a1    +   15   27   gh
  8. a1    -     8    2     ac
  9. a2    +    3    50    --
  10. a3    -    52   17   ++
  11. a4    -     8    2     ac
  12. a5    +    3    50    --
  13. a6    -    52   17   ++

  14. hash3
  15. aa    +   15   27   gh
  16. ab    -     8    2     ac
  17. a1   +    3    50    --
  18. a2    -    52   17   ++

  19. hash4
  20. a1    +   15   70   gh
  21. a1    -     8    2     ac
  22. a2    +    3    50    --
  23. a3    -    52   17   ++
  24. [root@centos ~]# awk '{a[$1,$2]=a[$1,$2]?a[$1,$2]"\n"$0:$0}END{for(i in a)if(a[i]~/a1 +\+/)print a[i]}' urfile|column -t
  25. a1  +  10  20  ab
  26. a1  +  15  27  gh
  27. a1  +  3   50  --
  28. a1  +  15  70  gh
  29. [root@centos ~]#
复制代码

论坛徽章:
0
6 [报告]
发表于 2013-01-17 12:18 |只看该作者
回复 5# reyleon


    谢谢你~一直忘了上来看了,才回复你~抱歉~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP