perl – 按重复次数排序

perl – 按重复次数排序,第1张

概述我有一个看起来像这样的文件: 192.168.2.2 150.25.45.7 8080192.168.12.25 178.25.45.7 50192.168.2.2 142.55.45.18 369192.168.489.2 122.25.35.7 8080192.168.489.2 90.254.45.7 80192.168.2.2 142.55.45.18 457 我编了所有数字. 我有一个看起来像这样的文件:

192.168.2.2 150.25.45.7 8080192.168.12.25 178.25.45.7 50192.168.2.2 142.55.45.18 369192.168.489.2 122.25.35.7 8080192.168.489.2 90.254.45.7 80192.168.2.2 142.55.45.18 457

我编了所有数字.

我需要根据第一个ip的重复次数对所有这些文件进行排序.所以输出理想情况如下:

192.168.2.2 8080 369 457 3192.168.489.2 8080 80 2192.168.12.25 50 1

所以:首先是ip,所有与第一个ip一致的端口,以及重复次数.

我一直在尝试使用sort命令和awk,但我不想做额外的工作,也许会错过其他一些简单的解决方案.

任何的想法?谢谢 :)

解决方法 Perlish的答案看起来像这样.

#!/usr/bin/perluse strict;use warnings;use 5.010;my %data;# Store IP address and port numberwhile (<DATA>) {  chomp;  my ($ip,undef,$port) = split;  push @{$data{$ip}},$port;}# Sort (in reverse) by length of List of portsfor (sort { @{$data{$b}} <=> @{$data{$a}} } keys %data) {  say "$_ @{$data{$_}} ",scalar @{$data{$_}};}__DATA__192.168.2.2 150.25.45.7 8080192.168.12.25 178.25.45.7 50192.168.2.2 142.55.45.18 369192.168.489.2 122.25.35.7 8080192.168.489.2 90.254.45.7 80192.168.2.2 142.55.45.18 457

输出:

192.168.2.2 8080 369 457 3192.168.489.2 8080 80 2192.168.12.25 50 1
总结

以上是内存溢出为你收集整理的perl – 按重复次数排序全部内容,希望文章能够帮你解决perl – 按重复次数排序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1265171.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存