免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7634 | 回复: 13

关于一个累加的问题 [复制链接]

论坛徽章:
0
发表于 2015-07-27 16:16 |显示全部楼层
这里有一个文件,格式如下:
01   2
01   4
...   ...
02  1
02  3
...  ...
03 6
... ...
把分别把01,02,03.。。。对应的那列数字累加,输出为
01  sum
02  sum
03  sum
...  ...
怎么实现?

论坛徽章:
26
2015亚冠之胡齐斯坦钢铁
日期:2015-06-25 21:40:202015亚冠之柏斯波利斯
日期:2015-08-31 17:03:192015亚冠之柏斯波利斯
日期:2015-11-07 13:10:00程序设计版块每日发帖之星
日期:2015-11-10 06:20:00每日论坛发贴之星
日期:2015-11-10 06:20:00程序设计版块每日发帖之星
日期:2015-11-26 06:20:00程序设计版块每日发帖之星
日期:2015-12-02 06:20:00黄金圣斗士
日期:2015-12-07 17:57:4615-16赛季CBA联赛之天津
日期:2015-12-23 18:34:14程序设计版块每日发帖之星
日期:2016-01-02 06:20:00程序设计版块每日发帖之星
日期:2016-01-06 06:20:00每日论坛发贴之星
日期:2016-01-06 06:20:00
发表于 2015-07-27 17:03 |显示全部楼层
  1. #!/usr/bin/perl

  2. my $col1;
  3. my $sum;
  4. while (<DATA>) {
  5.     if (/^\./) {
  6.         print "$col1\t$sum\n";
  7.         $sum = 0;
  8.     }
  9.     else {
  10.         my @line = split;
  11.         $col1 = $line[0];
  12.         $sum += $line[1];
  13.     }
  14. }

  15. __DATA__
  16. 01   2
  17. 01   4
  18. ...   ...
  19. 02  1
  20. 02  3
  21. ...  ...
  22. 03 6
  23. ... ...
复制代码

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2015-07-27 17:07 |显示全部楼层
回复 2# substr函数


    我十分怀疑 ... ... 是输入数据的一部分。

论坛徽章:
26
2015亚冠之胡齐斯坦钢铁
日期:2015-06-25 21:40:202015亚冠之柏斯波利斯
日期:2015-08-31 17:03:192015亚冠之柏斯波利斯
日期:2015-11-07 13:10:00程序设计版块每日发帖之星
日期:2015-11-10 06:20:00每日论坛发贴之星
日期:2015-11-10 06:20:00程序设计版块每日发帖之星
日期:2015-11-26 06:20:00程序设计版块每日发帖之星
日期:2015-12-02 06:20:00黄金圣斗士
日期:2015-12-07 17:57:4615-16赛季CBA联赛之天津
日期:2015-12-23 18:34:14程序设计版块每日发帖之星
日期:2016-01-02 06:20:00程序设计版块每日发帖之星
日期:2016-01-06 06:20:00每日论坛发贴之星
日期:2016-01-06 06:20:00
发表于 2015-07-27 17:10 |显示全部楼层
回复 3# MMMIX


1楼发的
格式如下
  1. 01   2
  2. 01   4
  3. ...   ...
  4. 02  1
  5. 02  3
  6. ...  ...
  7. 03 6
  8. ... ...
复制代码

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2015-07-27 17:13 |显示全部楼层
回复 4# substr函数


    那你应该在最后再输出一行 ... ... 呀

论坛徽章:
26
2015亚冠之胡齐斯坦钢铁
日期:2015-06-25 21:40:202015亚冠之柏斯波利斯
日期:2015-08-31 17:03:192015亚冠之柏斯波利斯
日期:2015-11-07 13:10:00程序设计版块每日发帖之星
日期:2015-11-10 06:20:00每日论坛发贴之星
日期:2015-11-10 06:20:00程序设计版块每日发帖之星
日期:2015-11-26 06:20:00程序设计版块每日发帖之星
日期:2015-12-02 06:20:00黄金圣斗士
日期:2015-12-07 17:57:4615-16赛季CBA联赛之天津
日期:2015-12-23 18:34:14程序设计版块每日发帖之星
日期:2016-01-02 06:20:00程序设计版块每日发帖之星
日期:2016-01-06 06:20:00每日论坛发贴之星
日期:2016-01-06 06:20:00
发表于 2015-07-27 17:20 |显示全部楼层
回复 5# MMMIX

谢谢大神指点!
  1. #!/usr/bin/perl

  2. my $col1;
  3. my $sum;
  4. while (<DATA>) {
  5.     if (/^\./) {
  6.         print "$col1\t$sum\n";
  7.         $sum = 0;
  8.     }
  9.     else {
  10.         my @line = split;
  11.         $col1 = $line[0];
  12.         $sum += $line[1];
  13.     }
  14. }
  15. print "...   ...\n";

  16. __DATA__
  17. 01   2
  18. 01   4
  19. ...   ...
  20. 02  1
  21. 02  3
  22. ...  ...
  23. 03 6
  24. ... ...
复制代码

论坛徽章:
0
发表于 2015-07-27 19:27 |显示全部楼层
... ...是省略号
   

论坛徽章:
7
巳蛇
日期:2013-11-28 09:22:59天秤座
日期:2014-10-25 15:40:452015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之德黑兰石油
日期:2015-07-15 08:46:452015亚冠之平阳省
日期:2015-11-08 16:27:53白银圣斗士
日期:2015-11-14 09:58:12
发表于 2015-07-27 20:33 |显示全部楼层
  1. #!/usr/bin/perl
  2. use strict;

  3. my $sum={};
  4. while(<DATA>){
  5.         chomp;
  6.         my ($key,$value)=split;
  7.         $sum->{$key}+=$value;
  8. }

  9. foreach my $key (sort {$a<=>$b} keys %{$sum}){
  10.         print "$key\t$sum->{$key}\n";
  11. }
复制代码

论坛徽章:
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
发表于 2015-07-28 01:01 |显示全部楼层
perl abc.pl data > save
  1. #!/usr/bin/perl

  2. my ( $K, $V ) = '';
  3. while (<DATA>) {
  4.     my ( $k, $v ) = split;
  5.     if ( $K ne $k ) {
  6.         print $K, "\t", $V, $/ if $K;
  7.         ( $K, $V ) = ( $k, 0 );
  8.     }
  9.     $V += $v;
  10. }
  11. print $K, "\t", $V, $/;
复制代码

论坛徽章:
0
发表于 2015-07-28 09:19 |显示全部楼层
$sum->{$key}是什么意思?

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP