免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: sunzhiguolu
打印 上一主题 下一主题

这里该如何处理啊 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2016-05-09 22:27 |只看该作者
这个就不好说了。

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
12 [报告]
发表于 2016-05-09 22:52 |只看该作者
回复 10# sunzhiguolu

use strict;
use warnings;


my %hStat;
while(<DATA>){
  chomp;
  my($sKey, $sVal) = split;
  $hStat{$sKey}->{$sVal} = 1;
}
foreach my $sKey(sort{$a<=>$b} keys %hStat){
  my($sCnt, $sLast, $sNL) =(0, "", "");
  foreach(sort{$a<=>$b} keys %{$hStat{$sKey}}){
    print "$sLast$sNL$sKey $_-" if($sCnt++ == 0 || ($_ - $sLast !=1));
    $sLast = $_;
    $sNL   = "\n";
  }
  print "$sLast\n";
}

__DATA__
111 1
111 2
333 7
222 6
222 9
111 3
222 10
333 3
333 4
333 5

   

评分

参与人数 1信誉积分 +10 收起 理由
sunzhiguolu + 10 弄明白了, 谢谢您指点!!!

查看全部评分

论坛徽章:
6
15-16赛季CBA联赛之新疆
日期:2016-03-22 22:34:5915-16赛季CBA联赛之山东
日期:2016-04-11 09:08:41程序设计版块每日发帖之星
日期:2016-06-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-19 06:20:00每日论坛发贴之星
日期:2016-07-19 06:20:0015-16赛季CBA联赛之青岛
日期:2016-07-20 22:44:17
13 [报告]
发表于 2016-05-10 00:40 |只看该作者
本帖最后由 RE_HASH 于 2016-05-10 03:53 编辑

$>  sort -k1,1 -k2,2n file |perl -n0pe 'print "Sorted\n$_"; s/((\d+)\s+(\d+))\n(?=\2\s+(\d+))/$4-$3 == 1? "$1-" : "$1-$3\n"/ge; print "\nMerged\n$_\nResult\n"; s/^(\d+\s+\d+)-.+?\s+(\d+)$/\1-\2/mg;'
Sorted

111 1
111 2
111 3
222 6
222 9
222 10
333 3
333 4
333 5
333 6
333 7

Merged

111 1-111 2-111 3
222 6-6
222 9-222 10
333 3-333 4-333 5-333 6-333 7

Result

111 1-3
222 6-6
222 9-10
333 3-7

评分

参与人数 1信誉积分 +10 收起 理由
sunzhiguolu + 10 这也太详细了, 谢谢您指点!!!

查看全部评分

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
14 [报告]
发表于 2016-05-10 09:48 |只看该作者
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my %hStat;
  5. while (<DATA>){
  6.     my ($sID, $sVal) = split;
  7.     $hStat{$sID}{$sVal} = 1;
  8. }

  9. $, = "\t";
  10. foreach my $sKey (sort {$a <=> $b} keys %hStat){
  11.     my @aData;
  12.     foreach (sort {$a <=> $b} keys %{$hStat{$sKey}}){
  13.         if (!@aData){
  14.             @aData = [($_) x 2];
  15.             next;
  16.         }
  17.         if ($aData[-1][-1] + 1 == $_){
  18.             $aData[-1][-1]++;
  19.             next;
  20.         }
  21.         push (@aData, [($_) x 2]);
  22.     }
  23.     print $sKey, join ("-", @$_), "\n" for @aData;
  24. }

  25. __DATA__
  26. 111 1
  27. 111 5
  28. 333 7
  29. 222 6
  30. 222 9
  31. 111 3
  32. 222 10
  33. 333 3
  34. 333 4
  35. 333 5
  36. 333 6
复制代码

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
15 [报告]
发表于 2016-05-10 09:57 |只看该作者
回复 13# RE_HASH
大神, 对于特殊情况该咋整啊.
111 1
111 5
333 7
222 6
222 9
111 3
222 10
333 3
333 4
333 5
333 6


   

论坛徽章:
12
2015年亚洲杯之乌兹别克斯坦
日期:2015-04-10 18:29:00狮子座
日期:2016-01-17 15:40:28处女座
日期:2016-01-16 17:36:17巨蟹座
日期:2016-01-16 17:35:48未羊
日期:2015-12-12 16:18:26青铜圣斗士
日期:2015-12-09 01:07:50IT运维版块每日发帖之星
日期:2015-12-05 06:20:00神斗士
日期:2015-12-03 23:13:59IT运维版块每日发帖之星
日期:2015-11-22 06:20:00IT运维版块每日发帖之星
日期:2015-11-08 06:20:00IT运维版块每日发帖之星
日期:2015-10-29 06:20:00IT运维版块每日发帖之星
日期:2016-06-30 06:20:00
16 [报告]
发表于 2016-05-10 10:08 |只看该作者
回复 8# Okelani


    最后的几句话,有点晕

论坛徽章:
6
15-16赛季CBA联赛之新疆
日期:2016-03-22 22:34:5915-16赛季CBA联赛之山东
日期:2016-04-11 09:08:41程序设计版块每日发帖之星
日期:2016-06-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-19 06:20:00每日论坛发贴之星
日期:2016-07-19 06:20:0015-16赛季CBA联赛之青岛
日期:2016-07-20 22:44:17
17 [报告]
发表于 2016-05-11 05:29 |只看该作者
回复 15# sunzhiguolu


    没看懂你的意思

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
18 [报告]
发表于 2016-05-11 07:32 |只看该作者
回复 17# RE_HASH
sort -k1,1n -k2,2n dat|perl -n0pe 'print "Sorted\n$_"; s/((\d+)\s+(\d+))\n(?=\2\s+(\d+))/$4-$3 == 1? "$1-" : "$1-$3\n"/ge; print "\nMerged\n$_\nResult\n"; s/^(\d+\s+\d+)-.+?\s+(\d+)$/\1-\2/mg;'
Sorted
111 1
111 3
111 5
222 6
222 9
222 10
333 3
333 4
333 5
333 6
333 7

Merged
111 1-1
111 3-3
111 5
222 6-6
222 9-222 10
333 3-333 4-333 5-333 6-333 7

Result
111 1-1
111 3-3
111 5
222 6-6
222 9-10
333 3-7


   

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
19 [报告]
发表于 2016-05-11 07:33 |只看该作者
cat dat                                 
111 1
111 5
333 7
222 6
222 9
111 3
222 10
333 3
333 4
333 5
333 6

论坛徽章:
6
15-16赛季CBA联赛之新疆
日期:2016-03-22 22:34:5915-16赛季CBA联赛之山东
日期:2016-04-11 09:08:41程序设计版块每日发帖之星
日期:2016-06-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-19 06:20:00每日论坛发贴之星
日期:2016-07-19 06:20:0015-16赛季CBA联赛之青岛
日期:2016-07-20 22:44:17
20 [报告]
发表于 2016-05-11 10:48 |只看该作者
$> sort -k1,1n -k2,2n aa|perl -n0pe 'print "Sorted\n$_"; s/((\d+)\s+(\d+))\n(?=\2\s+(\d+))/$4-$3 == 1? "$1-" : "$1-$3\n"/ge; print "\nMerged\n$_\nResult\n"; s/^(\d+\s+\d+)-.+?\s+(\d+)$/\1-\2/mg; print "$_\nSpecial:\n";s/(\s)(\d+)(?=\n|$)/\1\2-\2/g;'
Sorted

111 1
111 3
111 5
222 6
222 9
222 10
333 3
333 4
333 5
333 6
333 7

Merged

111 1-1
111 3-3
111 5
222 6-6
222 9-222 10
333 3-333 4-333 5-333 6-333 7

Result

111 1-1
111 3-3
111 5
222 6-6
222 9-10
333 3-7

Special:

111 1-1
111 3-3
111 5-5
222 6-6
222 9-10
333 3-7

评分

参与人数 1信誉积分 +10 收起 理由
sunzhiguolu + 10 神马都是浮云

查看全部评分

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP