On 10/11/15 11:05, Hugo Florentino wrote:

> Y obtengo un resultado como este:
> 2       37.203.214.106  80
> 1       45.55.128.152   443
> 1       52.33.104.21    443
> 3       54.80.63.47     443
[...]


> Cómo podría lograr que el listado se ordene con el criterio de columnas
> 3,1(invertido),2?

Hackish as hell y poco legible, pero funciona:

$ perl -an -e 'push @records, [$F[0], $F[1], $F[2]]; END {@sorted = sort
{@ipa = split(/\./, $a->[1]); @ipb = split(/\./, $b->[1]); $a->[2] <=>
$b->[2] || $b->[0] <=> $a->[0] || int($ipa[0]) <=> int($ipb[0])}
@records; foreach $record (@sorted) {printf("%-2s %-15s %3s\n",
@$record)}}' <input.txt
2  37.203.214.106   80
2  122.0.76.146     80
2  169.229.3.90     80
1  74.82.47.44      80
1  74.82.47.56      80
1  89.248.171.139   80
1  94.102.51.15     80
1  117.53.152.36    80
1  159.203.141.96   80
1  167.88.10.86     80
1  202.152.1.232    80
1  210.36.6.94      80
3  54.80.63.47     443
3  146.0.226.251   443
[...]

Saludos,
maykel

[1] http://stackoverflow.com/a/14018742
[2] http://perldoc.perl.org/functions/sort.html
[3] http://perldoc.perl.org/perlrun.html#Command-Switches



______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a