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 :

[Bash] Test élement d'un tableau dans un autre


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Par défaut [Bash] Test élement d'un tableau dans un autre
    Bonjour/Bonsoir,

    Dans le cadre d'un script de supervision, j'aurais besoin de tester la présence d'un élément dans le tableau "a" et si il est présent le supprimer du tableau "b", j'ai trituré un peu dans tous les sens grep -v , sed et autre, mais je ne trouve pas de solutions simple.

    tableau a :
    LISTENER

    tableau b :
    LISTENER_1 LISTENER LSNR_TMP

    J'aimerais que le tableau b ne contienne du coup plus que deux éléments : LISTENER_1 et LSNR_TMP.

    Avez-vous des idées à me suggérer ? Merci d'avance.

    Bonne journée/soirée

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Bonjour,

    Comment tu crées tes tableaux ?

    Peux-tu faire des tableau associatif pour que la clé soit le nom de l'élément et la valeur soit par exemple 1 pour tous les éléments (en fait, on se fiche de la valeur, c'est juste du remplissage) ?

    Ce qui donnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ declare -A a
    $ declare -A b
    $ a[LISTENER]=1
    $ b[LISTENER]=1
    $ b[LISTENER_1]=1
    $ b[LSNR_TMP]=1
    $ echo ${!a[@]}
    LISTENER
    $ echo ${!b[@]}
    LISTENER_1 LISTENER LSNR_TMP
    $ for i in ${!a[@]}; do unset b[$i] ; done
    $ echo ${!b[@]}
    LISTENER_1 LSNR_TMP

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Par défaut
    Bonjour,
    En fait, je récupère les éléments du tableau "b" en lisant un fichier listant des listeners, et ceux du tableau "a" en regardant les listeners actifs, j'aimerais que du coup le tableau b (ou c) contienne les processus inactifs, (c-à-d : le tableau b moins le tableau a) et les noms de listeners peuvent être un peu prêt n’importe quoi (ex : lsnr23_ext LISTENER ... ). Ces noms de listeners ensuite je les récupère pour de l'affichage donc j'en ai besoin (rapport à ce que tu as proposé).

    Edit : C'est bon, j'ai testé et ça fonctionne du tonnerre, je vais juste devoir faire deux boucles pour relire mes tableaux et les mettre en indices, mais merci , ça m'aide beaucoup !!

  4. #4
    Membre habitué
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Par défaut
    Bonjour,
    Désolé pour le double post, j'ai finalement un problème pour construire la boucle qui va placer les chaines de caractères en indice, j'ai essayé quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i in ${b[@]}; do
            c[${b[$i]}]=1
    done
    Pour déjà mettre les valeurs du tableau "b" en indice du tableau "c" (pour ensuite voir comment le purger des éléments que je ne désire pas)
    Mais ça ne fonctionne pas, des idées ? Je manipule mal les indices je pense Hormis les écrire en dur comme décrit précédemment, je ne vois pas comment "remplir" des indices dans une boucle comme celle là.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    si les éléments ne comportent qu'un mot :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    b=( $(grep -xvf fichier_a <(printf '%s\n' "${b[@]}")) )
    mais le premier tableau b est-il indispensable ?
    on pourrait remplacer printf par la commande qui liste les listener
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Afficher les élements d'un tableau dans une ListeView
    Par pink192 dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 22/07/2013, 10h26
  2. Utiliser un tableau dans une autre frame
    Par reureu dans le forum VB.NET
    Réponses: 2
    Dernier message: 03/08/2007, 14h23
  3. création de tableau dans un autre tableau
    Par freestyler dans le forum Delphi
    Réponses: 2
    Dernier message: 02/11/2006, 08h54
  4. Afficher les élements d'un formulaire dans une autre fenetre
    Par BernardT dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/12/2005, 22h52
  5. Pb pour se servir d'un tableau dans une autre unité
    Par libititi dans le forum Langage
    Réponses: 7
    Dernier message: 08/06/2005, 11h40

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