====== Sortieren von IP-Adressen ====== * Urspruenglicher Autor: Dirk Deimeke * Urspruengliches Datum: 12.02.2011 Haeufig kommt es vor, dass man eine Liste von IP-Adressen sortieren muss. Dabei ist es hilfreich, sich zu vergegenwaertigen, dass IPs (bei IPv4) aus 4 Bytes bestehen. Also kann man jede IP auch durch eine Zahl darstellen. Wenn ''5.6.7.8'' die IP-Adresse ist, kann man sie auch in dieser Form schreiben ''5*256*256*256 + 6*256*256 + 7*256 + 8'', mit anderer Klammerung ergibt sich ''(((5*256 + 6)*256 + 7)*256 + 8)'' oder auch ''84281096''. Zureck zur IP geht es mit ganzzahliger Division und Restwertberechnung: $ bc 84281096 % 256 8 84281096 / 256 329223 329223 % 256 7 329223 / 256 1286 1286 % 256 6 1286 / 256 5 Darum sollte es aber gar nicht gehen ;-) Dieses kleine Perl-Skript nimmt eine Liste von IP-Adresse vom Standard-Eingabekanal STDIN und gibt die Liste sortiert an STDOUT (Standardausgabekanal) aus: #!/usr/bin/perl use warnings; use strict; sub ip_vergleich { my @ip1 = split /\./,$a ; my @ip2 = split /\./,$b ; my $i1 = (($ip1[0]*256 + $ip1[1])*256 + $ip1[2])*256 + $ip1[3]; my $i2 = (($ip2[0]*256 + $ip2[1])*256 + $ip2[2])*256 + $ip2[3]; return $i1 <=> $i2; } my @sorted = sort ip_vergleich (); map { print } @sorted; Fragen? Fragen! [[adminstoriesartikel|Zurück zur Uebersicht]]