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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    juin 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2007
    Messages : 36
    Points : 24
    Points
    24
    Par défaut [UNIX] Suppression doublons dans une variable
    Bonjour

    Je vous remonte une discussion sur le forum LINUX du 20/02 pour un problème de suppression de doublon dans une variable.

    La discussion originale qui correspond pile-poil à mon problème est la suivante

    Citation Envoyé par havany Voir le message
    Bonjour, Je travaille actuellement sur un script shell assez long, et je suis un peu bloqué sur un problème. Je me retrouve avec une variable contenant une liste de mots dont certains sont en doubles.
    Je voudrais tout simplement supprimer les doubles de cette variable. Concrètement :
    j'ai ceci :
    # echo $var
    AA AA BB CC CC DD EE FF FF
    et après traitement je voudrais avoir :

    # echo $var AA BB CC DD EE FF

    Là où ça se complique c'est que je voudrais éviter d'envoyer la variable dans un fichier, pour la traiter. De plus le nombre de mots dans la variable est totalement aléatoire, et l'ordre alphabétique n'est pas garanti non plus. (Je sais ça fait beaucoup de contraintes, mais si c'est impossible dites le moi et je me résignerai à faire avec un fichier)
    Je vous remercie d'avance.
    Sur le forum LINUX, 2 solutions qui fonctionnent toutes deux ont été proposées.

    Citation Envoyé par N_BaH Voir le message
    en bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var="AA AA BB CC CC DD EE FF FF"
    var=$(tr ' ' '\n' <<<$var | sort -u | tr '\n' ' ')
    echo $var
    AA BB CC DD EE FF
    ...
    ?

    Citation Envoyé par jmelyn Voir le message
    Une autre solution?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var=$(echo $(echo -e ${var// /\\n} | sort -u))
    Malheureusement, sous UNIX - SOLARIS 10, ca ne marche pas.

    Que faudrait-il changer pour obtenir la même chose que sous LINUX et avoir ainsi un script portable (je travaille sur les deux environnements) ?

    D'avance merci

  2. #2
    Membre confirmé
    Inscrit en
    juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    Par défaut
    Sur le Solaris serveur 5.10 il suffit d'appliquer la derniere commande avec la variable var comme les traces montrent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    [mytest@myHost tmp]>uname -a
    SunOS myHost 5.10 Generic_127111-01 sun4u sparc SUNW,Sun-Fire-V490
    [mytest@myHost tmp]>var="AA AA BB CC CC DD EE FF FF"
    [mytest@myHost tmp]>var=$(tr ' ' '\n' <<<$var | sort -u | tr '\n' ' ')
    [mytest@myHost tmp]>echo $var
    AA AA BB CC CC DD EE FF FF
    [mytest@myHost tmp]>var=$(echo $(echo -e ${var// /\\n} | sort -u))
    [mytest@myHost tmp]>echo $var
    AA BB CC DD EE FF
    [mytest@myHost tmp]>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    juin 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2007
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Hélas, j'ai oublié de préciser que j'utilise KSH

    Oui, la seconde solution fonctionne en BASH.

    Mais, en KSH, pour la première solution, j'ai le message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    syntax error at line 1 : `<' unexpected
    et la seconde solution ne renvoie rien (tjrs en shell KSH)

    une idée pour que ca marche en KSH ?

  4. #4
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 2 695
    Points : 7 880
    Points
    7 880
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var=$(echo $var | tr ' ' '\n' | sort -u | tr '\n' ' ')
    ɹǝsn *sıɹɐlos*

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    juin 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2007
    Messages : 36
    Points : 24
    Points
    24
    Par défaut


    super cette fois-ci ca fonctionne !

    Tres instructif pour avoir une illustration des multiples différences d'un shell à l'autre et d'un environnement à un autre !

    Encore merci !

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

Discussions similaires

  1. Suppression des doublons dans une variable de type tableau
    Par damsmut dans le forum Général VBA
    Réponses: 2
    Dernier message: 23/07/2019, 10h36
  2. [PHP 5.4] supprimer doublon dans une variable
    Par laurentbatch dans le forum Langage
    Réponses: 29
    Dernier message: 14/08/2013, 18h11
  3. supprimer des doublons dans une variable
    Par havany dans le forum Linux
    Réponses: 6
    Dernier message: 20/02/2010, 10h31
  4. Suppression doublons dans une plage Excel 2000
    Par modus57 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/02/2009, 08h35
  5. Suppression doublon dans une table
    Par sat83 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/09/2008, 11h37

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