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 :

Tri de chaines de caractères


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut Tri de chaines de caractères
    Bonjour à tous,
    J'aimerai savoir s'il ya une commande en unix qui trai par ordre decroissant les chainbe de caractere en terme de taille de la chaine
    Par exemple j'ai :
    abc
    abcde
    abcdef
    et donc j'aimerai quil m'affiche
    abcdef
    abcde
    abc



    Merci d'avance

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    sort -r ?

  3. #3
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,

    sort -r ?
    Merci zipe31,
    pour sort -r : Inverser l'ordre de tri, afin que les lignes avec la plus grande valeur de cle apparaissent en premier.

    Mais je comprends pas là de quelle valeur on parle

    J'ai testé , mais ca na pas marché

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Si on ne précise pas de clé (champ) alors c'est la ligne entière qui est prise en compte et donc celle ayant la plus grande valeur (en nombre de caractères) qui sera affichée en premier.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par étoile de mer Voir le message
    J'ai testé , mais ca na pas marché
    Pourtant :
    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
    $ echo -e "abcdef\nabcd\nabc\nabcdefg\nabcde"
    abcdef
    abcd
    abc
    abcdefg
    abcde
     
    $ echo -e "abcdef\nabcd\nabc\nabcdefg\nabcde" | sort
    abc
    abcd
    abcde
    abcdef
    abcdefg
     
    $ echo -e "abcdef\nabcd\nabc\nabcdefg\nabcde" | sort -r
    abcdefg
    abcdef
    abcde
    abcd
    abc
     
    $

  6. #6
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut
    Merci beaucoup

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour,

    ça fonctionne parce que les chaînes sont elles-mêmes triées alphabétiquement,
    mais que se passe-t-il si les chaînes sont aléatoires ?

    soit la liste L :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    printf '%s\n' "${L[@]}"
    noffnyi
    susj
    pzdrjh
    ahf
    zmp
    mb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    printf '%s\n' "${array[@]}" | sort -r
    zmp
    susj
    pzdrjh
    noffnyi
    mb
    ahf


    il faut prendre en compte le nombre de caractères, et effectuer le tri dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for i in "${L[@]}"; do echo "${#i} $i"; done | sort -t' ' -rn -k1,1 | cut -d ' ' -f2
    noffnyi
    pzdrjh
    susj
    ahf
    zmp
    mb
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programme de tri de chaine de caractères
    Par vetchang dans le forum Langage
    Réponses: 1
    Dernier message: 27/05/2008, 17h26
  2. Tri de chaine de caractère avec fgets
    Par clampin dans le forum Débuter
    Réponses: 4
    Dernier message: 16/05/2008, 22h42
  3. Comparaisons et tri des chaines de caractère.
    Par liliemmy dans le forum SQL
    Réponses: 2
    Dernier message: 01/04/2008, 17h52
  4. code de filtre et tri des chaines de caractères
    Par fatenatwork dans le forum Collection et Stream
    Réponses: 18
    Dernier message: 12/03/2008, 16h31
  5. Réponses: 17
    Dernier message: 16/12/2005, 09h45

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