TRi d'adresses IP

Résolu
Bonjour à tous ,
J'aimerais trier des adresses IP contenu dans un fichier à partir d'un terminal via la commande sort:

% cat data
10.10.10.10
10.11.10.11
10.11.10.9
123.108.4.56

% sort ??? < data
10.10.10.10
10.11.10.9
10.11.10.11
123.108.4.56

J'ai pensé à faire sort -n -k IP mais je ne sais pas comment indiquer qu'il faut trier chaque colonne. J'ai essayé de remplacer les points par des espaces et faire un pipe avec sort comme ceci:

sed 's/./ /g' data | sort -n -k 1,4 data

Visiblement 1,4 ne signifie pas trier de la colonne 1 jusqu'à la 4!
Merci de bien vouloir m'aider

2 réponses

  1. Modérateur
    Salut,

    sort -t '.' -k 1n -k 2n -k 3n -k 4n data

    ;-))
    0
    1. merci!!! ah sort -g marche aussi!
      0
      1. Modérateur
        sort -g marche aussi
        Pas chez moi ;-((

        Je l'avais essayé en 1er mais sans succès ;-(
        0
      2. est ce que c'est normal que certaines commandes marchent chez certaines personnes et pas chez d'autres?
        0
      3. Modérateur
        Tout dépend du système et de la distrib ;-\

        Beaucoup de choses sont en train de changer sur les distributions GNU/Linux, en bien ou en mauvais, je n'en sais rien ;-((

        Toujours est-il que ça bouge. Par exemple sur ma Mandriva 2010, je n'ai plus de pages man pour uniq, ls, etc. ;-(

        De même la version de "sort" a été remplacée par une implémentation en Perl :

        NAME
               sort - perl pragma to control sort() behaviour
        
        SYNOPSIS
                   use sort 'stable';          # guarantee stability
                   use sort '_quicksort';      # use a quicksort algorithm
                   use sort '_mergesort';      # use a mergesort algorithm
                   use sort 'defaults';        # revert to default behavior
                   no  sort 'stable';          # stability not important
        
                   use sort '_qsort';          # alias for quicksort
        
                   my $current;
                   BEGIN {
                       $current = sort::current();     # identify prevailing algorithm
                   }
        0
      4. ok! je comprend mieux! merci
        0