IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

problème sort fichier plusieurs colonnes


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut problème sort fichier plusieurs colonnes
    Bonjour à tous,

    Je suis face à un comportement de la commande sort que je ne comprends pas. Pour faire simple, voilà des petits exemples qui montrent où ça coince :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    cat > test1
    ACE
    ACE2
     
    sort test1
    ACE
    ACE2
     
    cat > test2
    ACE;
    ACE2;
     
    sort -t ";" -k 1 test2
    ACE;
    ACE2;
     
    sort -t ";" +0 test2
    ACE;
    ACE2;
     
    cat > test3
    ACE;bla
    ACE2;bla
     
    sort -t ";" -k 1 test3
    ACE2;bla
    ACE;bla
     
    cat > test4
    bla;ACE
    bla;ACE2
     
    sort -t ";" -k 2 test4
    bla;ACE
    bla;ACE2
    Je ne comprends pas le résultat du test3... Et c'est très gênant car je dois en fait faire un join entre deux fichiers bien plus conséquents. Le premier ressemble au test3; le second au test4 et la jointure se fait sur la colonne contenant ACE et ACE2. Le join se plaint donc d'un tri incorrect sur le premier fichier...

    Pour info : sort (GNU coreutils) 7.1
    D'autre part, j'ai déjà essayé de faire un tri numérique sur chacun de mes fichiers, cela ne convient pas au join.

    Si vous aviez qq explications ou une idée pour que je réussisse à faire le join, cela serait super.

    Merci d'avance!!

    LMS

  2. #2
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Salut,
    Effectivement, après test, j'ai le même résultat que toi sur le fichier test3.
    Il semble que le problème vient du ';'. J'ai modifié le fichier pour utilisé $ comme séparateur et la sort se comporte correctement... Étrange.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Salut,

    Merci! Je viens d'essayer sur mes fichiers initiaux, bien plus conséquents en nombre de colonnes, avec "$" qui n'apparaît pas autrement dans mes fichiers, mais cela ne change pas le tri.

    Sur ce cas précis j'ai contourné le pb : j'ai interverti mes colonnes pour que celle sur laquelle le tri se fait soit toujours la dernière. Le join se fait alors sans problème, le tri se comportant dans tous les cas comme le test1.

    Je reste perplexe... Je manipule régulièrement de grands fichiers de ce genre et n'aime pas trop ne pas pouvoir avoir 100% dans mes commandes

    Bonne journée!

    LMS

  4. #4
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    L'utilisation du '$' en tant que séparateur n'a pas fonctionné pour toi ? vraiment étrange vu qu'il à fonctionné pour moi...
    J'ai remarqué autre chose aussi, il semble que le tri s'effectue correctement à condition que la taille de la clef ne change pas.
    Je veux dire, j'ai tenté avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $ cat test
    ACE3;aaaa
    ACE1;zzz
    ACE2;aaa
    $ sort -t ';' -k 1 test
    ACE1;zzz
    ACE2;aaa
    ACE3;aaaa
    Alors que si je remplace 'ACE1' par 'ACE' cette ligne se retrouve en dernier.

    Ceci dit la différence de comportement entre ton sort et le mien viens surement de la version (je suis en 8.5)

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Juré

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cat > test7
    ACE$aaa
    ACE2$bbb
     
    sort -t "$" -k 1 test7
    ACE2$bbb
    ACE$aaa
    Par contre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cat > test8
    aaa$ACE
    bbb$ACE2
     
    sort -t "$" -k 2 test8
    aaa$ACE
    bbb$ACE2
    et idem avec ";" en séparateur... Sûrement une diffèrence de version, il m'est déjà arrivé de changer de machine pour réussir un join un peu hard.

    Effectivement je n'ai pas de pb de tri sur des clés ayant toujours la même longueur. Mais là ce sont des noms de gènes (bioinformatique) de longueur variable, je ne peux rien y faire. Je garde ma solution "bidouille" de la dernière colonne pour l'instant

    Merci,

    LMS

Discussions similaires

  1. problème listbox avec plusieurs colonnes
    Par djams9 dans le forum VB.NET
    Réponses: 12
    Dernier message: 07/07/2011, 10h38
  2. plot depuis fichier plusieurs colonnes
    Par flora2512 dans le forum Calcul scientifique
    Réponses: 2
    Dernier message: 07/01/2011, 11h25
  3. Créer deux listes à partir d'un fichier à plusieurs colonnes
    Par bourgui78 dans le forum Général Python
    Réponses: 4
    Dernier message: 05/11/2008, 11h00
  4. Sort sur plusieurs colonnes
    Par denice007 dans le forum Linux
    Réponses: 2
    Dernier message: 17/03/2007, 18h20
  5. Réponses: 10
    Dernier message: 12/06/2006, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo