免费注册 查看新帖 |

Chinaunix

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

求助关于过滤数组的问题 [复制链接]

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

然后有一个数组@white_ip = 180.153.117.132 180.153.118.25
现在想出除去DESIP为@white_ip
然后从结果中统计
其他IP那一行的个数写入一个文件
比如 后面的出现的次数

202.104.157.163        180.153.117.132                2
180.153.117.132        125.93.82.218                2
14.153.97.48        180.153.117.132                2
218.75.144.93        180.153.117.132                2
59.172.246.92        180.153.117.132                2

我现在只能求出每组ip出现的次数统计
但是过滤不了@white_ip这个数组
求大神指点


现在有data.log的ip地址包
__DATA__

SOURTHIP              DESIP

180.153.118.25        180.153.117.132
180.153.118.25        180.153.117.132
180.153.117.132        180.153.118.25
180.153.117.132        180.153.118.25
180.153.118.25        180.153.117.132
116.209.240.67        180.153.117.132
180.153.117.132        116.209.240.67
180.153.117.132        180.153.118.25
180.153.117.132        180.153.118.25
180.153.118.25        180.153.117.132
180.153.118.25        180.153.117.132
180.153.117.132        180.153.118.25
180.153.117.132        180.153.118.25
180.153.118.25        180.153.117.132
180.153.118.25        180.153.117.132
218.75.144.93        180.153.117.132
180.153.117.132        218.75.144.93
218.75.144.93        180.153.117.132
180.153.117.132        218.75.144.93
125.127.79.81        180.153.117.132
180.153.117.132        125.127.79.81
125.127.79.81        180.153.117.132
180.153.117.132        125.127.79.81
180.153.117.132        180.153.118.25
180.153.117.132        180.153.118.25
180.153.118.25        180.153.117.132
180.153.118.25        180.153.117.132

论坛徽章:
0
2 [报告]
发表于 2012-12-05 15:03 |只看该作者
本帖最后由 懒狒狒 于 2012-12-05 15:36 编辑

open FILEINI,"Ip_Config.ini" or die "can't open conf file\n";
my @host;
while (my $line=<FILEINI>){
my ($ip,$addr)=split(/\s/,$line);
push @host,"$addr",if($ip eq "ip");
}
close(FILEINI);

这个是我得出@host 为需要过滤的数组
底下的方法是我现在可以求出的数组出现的次数
@rubyish

sub capinfo_ip{
#理论上要得出15条数据
        my $temp_ip=$result_path."filter".strftime("%Y%m%d-%H%M",localtime(time)).".log";
        open TEMP,'<',$temp_ip or die("No found this file$!");
        my %hash;
        while(<TEMP>){
                chomp;
                $hash{$_}++ if defined $hash{$_};
                $hash{$_}=1 unless defined $hash{$_};
        }
        close TEMP;
        exit;
        open TEMP,'>',$temp_ip or die("No found this file$!");
        print TEMP "SourthIP\tDestnationIP\tCounts\n";
        print TEMP"$_\t","\t$hash{$_}\n" foreach((sort {$hash{$b}<=>$hash{$a}} (keys %hash)));
        close TEMP;
}

论坛徽章:
0
3 [报告]
发表于 2012-12-05 18:13 |只看该作者
本帖最后由 懒狒狒 于 2012-12-05 18:14 编辑

问题是解决了,只不过是通过其他地方的修改
所以没有牵扯到这一块
但是还是想知道遇到这种问题
大虾是怎么搞定
)

论坛徽章:
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
4 [报告]
发表于 2012-12-06 09:38 |只看该作者
问题是kan bu dong

论坛徽章:
0
5 [报告]
发表于 2012-12-06 10:45 |只看该作者
本帖最后由 懒狒狒 于 2012-12-06 10:47 编辑

那我详细说说把
现在得到的有一个ini配置文件,里面存放数组ip假设为: 180.153.117.132 180.153.118.25
然后用这个数组的每一项匹配日志文件ipdata.log的第二列
假设日志文件为:
180.153.118.25        180.153.117.132
180.153.117.132        180.153.118.25
180.153.117.132        180.153.118.25
180.153.118.25        180.153.117.132
116.209.240.67        180.153.117.132
180.153.117.132        116.209.240.67
180.153.117.132        180.153.118.25
180.153.117.132        180.153.118.25
218.75.144.93        180.153.117.132
180.153.117.132        218.75.144.93
125.127.79.81        180.153.117.132
180.153.117.132        125.127.79.81
125.127.79.81        180.153.117.132
180.153.117.132        125.127.79.81

那么就删除对应的行数据然后统计剩余数据每行出现的次数
上面的例子我想得到的结果是 当然如果可以根据出现的次数排序那就更好了
180.153.117.132        116.209.240.67                      1
180.153.117.132        218.75.144.93                        1
180.153.117.132        125.127.79.81                        2


不知道这么写懂我的意思吗,谢谢了

回复 4# rubyish


   

论坛徽章:
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
6 [报告]
发表于 2012-12-06 11:50 |只看该作者
dong了:
  1. #!/usr/bin/perl
  2. my @a = qw/180.153.117.132 180.153.118.25/;
  3. my @b = <DATA>;
  4. my ( %h, %c );
  5. @h{@a} = (1) x @a;
  6. map { $c{$_}++ } map { /(\S+)$/; $h{$1} ? () : $_ } @b[3..$#b];
  7. s/$/\t$c{$_}/ and print for sort { $c{$a} <=> $c{$b} } keys %c;

  8. __DATA__

  9. SOURTHIP              DESIP

  10. 180.153.118.25        180.153.117.132
  11. 180.153.118.25        180.153.117.132
  12. 180.153.117.132        180.153.118.25
  13. 180.153.117.132        180.153.118.25
  14. 180.153.118.25        180.153.117.132
  15. 116.209.240.67        180.153.117.132
  16. 180.153.117.132        116.209.240.67
  17. 180.153.117.132        180.153.118.25
  18. 180.153.117.132        180.153.118.25
  19. 180.153.118.25        180.153.117.132
  20. 180.153.118.25        180.153.117.132
  21. 180.153.117.132        180.153.118.25
  22. 180.153.117.132        180.153.118.25
  23. 180.153.118.25        180.153.117.132
  24. 180.153.118.25        180.153.117.132
  25. 218.75.144.93        180.153.117.132
  26. 180.153.117.132        218.75.144.93
  27. 218.75.144.93        180.153.117.132
  28. 180.153.117.132        218.75.144.93
  29. 125.127.79.81        180.153.117.132
  30. 180.153.117.132        125.127.79.81
  31. 125.127.79.81        180.153.117.132
  32. 180.153.117.132        125.127.79.81
  33. 180.153.117.132        180.153.118.25
  34. 180.153.117.132        180.153.118.25
  35. 180.153.118.25        180.153.117.132
  36. 180.153.118.25        180.153.117.132
复制代码

论坛徽章:
0
7 [报告]
发表于 2012-12-06 12:18 |只看该作者
回复 6# rubyish

谢谢!{:3_200:}
太厉害了,具体的代码就4行搞定了

路漫漫其修远兮,吾将上下而求索

能帮我看看我的第二个问题吗,这个没有思路呀 第一个我解决了,嘎嘎

http://bbs.chinaunix.net/thread-4057488-1-1.html


   

论坛徽章:
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
8 [报告]
发表于 2012-12-06 12:56 |只看该作者
回复 7# 懒狒狒
  1. #uname
  2. Linux
复制代码
win bu dong

论坛徽章:
0
9 [报告]
发表于 2012-12-06 14:24 |只看该作者
回复 8# rubyish


谢谢了,大牛
我再想想别的办法吧

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP