Se connecter avec
S'enregistrer | Connectez-vous

Trie sous Linux

Dernière réponse : dans Systèmes d'exploitation

Bonjour tout le monde,

Au faite je voulais trier un fichier qui a la forme suivante:

57.250.2.45;brdu050
57.250.2.61;bsan050
57.250.2.9;bmia050
57.250.2.64;btpa050
57.250.2.74;bsjo050
57.250.2.76;bewr052
57.250.2.97;bmia052


quand je lance la commande sort sur ce fichier le résultat obtenu n'est pas correcte:

57.250.2.45;brdu050
57.250.2.61;bsan050
57.250.2.64;btpa050
57.250.2.74;bsjo050
57.250.2.76;bewr052
57.250.2.9;bmia050 <--
57.250.2.97;bmia052

Cela est expliqué par le faite que le code ascci du ";" vient apres le code ascii des nombres.

S'il y a des idées pour contourner ce probléme je suis preneur.

Merci pour vos réponses,




Autres pages sur : trie linux

Lassé par la pub ? Créez un compte

Salut mavioxi
mavioxi a dit :

quand je lance la commande sort sur ce fichier le résultat obtenu n'est pas correcte:

57.250.2.45;brdu050
57.250.2.61;bsan050
57.250.2.64;btpa050
57.250.2.74;bsjo050
57.250.2.76;bewr052
57.250.2.9;bmia050 <--
57.250.2.97;bmia052

Cela est expliqué par le faite que le code ascci du ";" vient apres le code ascii des nombres.

S'il y a des idées pour contourner ce probléme je suis preneur.

Merci pour vos réponses,

C'est normal ! D'ailleurs, le "9" devrait se trouver en tout premier, avant le "45" si le tri se basait sur la valeur numérique. Or, il se base sur la valeur ASCI des caractères.
Si tu veux que les deux modes de tri soient identiques, il faut que les chaînes de caractères fassent la même longueur.
Il faudrait remplacer "9" par "09" dans ton fichier, mais ça pose sans doute problème par ailleurs.

Essaie la commande :

sort -n -t . +0 -4
en gros, sauf erreur (très possible de ma part) :
-n tri numérique (plutôt que ASCI)
-t séparateur entre les champs "." (point)
+0 sur le premier champ
-4 jusqu'au cinquième

A +
Lassé par la pub ? Créez un compte
Tom's guide dans le monde