gpt4 book ai didi

perl - 按重复次数排序

转载 作者:行者123 更新时间:2023-12-04 22:50:08 25 4
gpt4 key购买 nike

我有一个看起来像这样的文件:

192.168.2.2 150.25.45.7 8080
192.168.12.25 178.25.45.7 50
192.168.2.2 142.55.45.18 369
192.168.489.2 122.25.35.7 8080
192.168.489.2 90.254.45.7 80
192.168.2.2 142.55.45.18 457

所有的数字都是我编的。

我需要根据第一个ip的重复次数对所有这些文件进行排序。因此,理想情况下,输出将如下所示:
192.168.2.2 8080 369 457 3
192.168.489.2 8080 80 2
192.168.12.25 50 1

所以:第一个 ip,与第一个 ip 一致的所有端口,以及重复次数。

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

任何的想法?谢谢 :)

最佳答案

Perlish 的答案看起来像这样。

#!/usr/bin/perl

use strict;
use warnings;
use 5.010;

my %data;

# Store IP address and port number
while (<DATA>) {
chomp;
my ($ip, undef, $port) = split;
push @{$data{$ip}}, $port;
}

# Sort (in reverse) by length of list of ports
for (sort { @{$data{$b}} <=> @{$data{$a}} } keys %data) {
say "$_ @{$data{$_}} ", scalar @{$data{$_}};
}

__DATA__
192.168.2.2 150.25.45.7 8080
192.168.12.25 178.25.45.7 50
192.168.2.2 142.55.45.18 369
192.168.489.2 122.25.35.7 8080
192.168.489.2 90.254.45.7 80
192.168.2.2 142.55.45.18 457

输出:
192.168.2.2 8080 369 457 3
192.168.489.2 8080 80 2
192.168.12.25 50 1

关于perl - 按重复次数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8518574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com