免费注册 查看新帖 |

Chinaunix

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

请教个问题 求助。。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-09 14:12 |只看该作者 |倒序浏览

现在有下班这样一组数据 怎么才能把ip 合并
预想的结果是

1        124.152.147.217
1        114.235.249.209
3        183.212.147.41


__DATA__
1        124.152.147.217
1        114.235.249.209
1        183.212.147.41
2        183.212.147.41

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
2 [报告]
发表于 2012-07-09 14:27 |只看该作者
本帖最后由 cdtits 于 2012-07-09 14:34 编辑
  1. while (<DATA>) {
  2.     ($x, $y) = split;
  3.     next if $hash{$y};
  4.     $hash{$y} = 1;
  5.     print;
  6. }
  7. __DATA__
  8. 1        124.152.147.217
  9. 1        114.235.249.209
  10. 1        183.212.147.41
  11. 2        183.212.147.41
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-07-09 14:56 |只看该作者
前边的结果还是不对阿 不过谢谢你啦,,回复 2# cdtits


   

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
4 [报告]
发表于 2012-07-09 15:13 |只看该作者
莫非是这样:
  1. %hash;
  2. while (<DATA>) {
  3.     ($x, $y) = split;
  4.     $hash{$y} += $x;
  5. }
  6. while (($k, $v) = each %hash) {
  7.     print "$v\t$k\n";
  8. }
  9. __DATA__
  10. 1        124.152.147.217
  11. 1        114.235.249.209
  12. 1        183.212.147.41
  13. 2        183.212.147.41
复制代码

论坛徽章:
0
5 [报告]
发表于 2012-07-09 15:57 |只看该作者
#!D:\strawberry\perl\bin\perl5.12.3 -w

open FILE,"D:/cc/cc1.txt" or die "$!";

while (<FILE>)
{
          chomp;
    my ( $x, $y ) = split;
    if(exists $hash{$x})
    {
            $hash{$x}=$hash{$x}+1;
    }else
    {
            $hash{$y}=$x;
    }
}

while((my $k,my $v)=each %hash)
{
  print $v,"\t",$k,"\n";
}
close FILE;

  



论坛徽章:
0
6 [报告]
发表于 2012-07-09 20:08 |只看该作者
cdtits 发表于 2012-07-09 15:13
莫非是这样:

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP