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 :

awk / grep ou autre ?


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 4
    Par défaut awk / grep ou autre ?
    Bonjour,

    Tout d'abord merci d'avance ne serait-ce que du temps que vous pris pour lire mon message et un TRÈS grand merci si vous m'aidez.

    Je préviens tout de suite je suis une grosse buse, mais j'essaie quand même... de faire des choses

    Je cherche à extraire plusieurs informations du fichier suivant :
    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
    Drive Name              TTTT00002_RSFE0010X_44
            Index                   73
            NonRewindDrivePath      /dev/mt_d3l7
            NDMP client             XXXX00110
            Type                    hcart3
            Status                  DOWN
            SCSI Protection         SR (Global)
            Shared Access           No
            TLD(5) Definition DRIVE=44
            Serial Number           VD036AV1511BVW00093
     
    Drive Name              TTTT00002_RSFE0010X_22
            Index                   73
            NonRewindDrivePath      /dev/mt_d3l8
            NDMP client             XXXX00111
            Type                    hcart3
            Status                  UP
            SCSI Protection         SR (Global)
            Shared Access           No
            TLD(5) Definition DRIVE=44
            Serial Number           VD036AV1511BVW00193
    j'explique si je trouve un status DOWN je souhaite récupérer sur une ligne les informations suivantes :
    Drive Name
    NDMP client

    pour commencer j'essaie juste avec Drive Name mais j'ai ne sais pas comment filtrer les informations dont je n'ai pas besoin...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat test.txt | awk ' /DOWN/ { print $2} $1~ /^[A-Z]/ { print $3}'
    au final je n'ai pas de filtre sur le DOWN et en plus je recupere toutes les valeurs de la colonne 3...

    Merci d'avance de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Ça me paraît très simple avec awk. Il suffit de coder l'algorithme suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Si je trouve une ligne commençant par 'Drive Name' alors je stocke le 3ème champ dans une variable DriveName.
    Si je trouve une ligne contenant 'NDMP client' alors je stocke le 3ème champ dans une variable NDMPclient.
    Si je trouve une ligne contenant 'STATUS' et 'DOWN' alors j'imprime le contenu des variables DriveName et NDMPclient.
    Élémentaire, non ?

  3. #3
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    • quand on voit Drive Name on stocke le nom du lecteur
    • quand on voit NDMP client on stocke l'id du client
    • quand on voit Status et si le status vaut DOWN alors on affiche les deux variables stockées

    edit: voir la réponse de jack-ft juste au dessus

    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
    $ awk '
    /Drive Name/ {
       drive = $3
       next
    }
     
    /NDMP client/ {
       ndmp = $3
       next
    }
     
    $1 == "Status" && $2 == "DOWN" {
       printf ("Drive Name  : %s\nNDMP client : %s\n", drive, ndmp)
    }
    ' test.txt
    ou sur la même ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ awk '/Drive Name/ {drive = $3; next} /NDMP client/ {ndmp = $3; next} $1 == "Status" && $2 == "DOWN" {printf ("Drive Name  : %s\nNDMP client : %s\n", drive, ndmp)}' test.txt
    et le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Drive Name  : TTTT00002_RSFE0010X_44
    NDMP client : XXXX00110

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 4
    Par défaut
    Super BufferBob, jack-ft

    Merci à vous deux c'est exactement ce que je cherchais a faire !!

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    edit: voir la réponse de jack-ft juste au dessus
    Les grands esprits se rencontrent...
    On a probablement eu la même idée en même temps (à une heure indue).
    La grillade est due au fait que j'avais choisi de laisser l'implémentation de l'algorithme en exercice au lecteur (qui a dit paresse?) tandis que tu prenais le temps d'implémenter concrètement l'excellente solution et de la tester, je suppose...

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    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 349
    Par défaut
    Pour le fun (pas vraiment testé ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/Drive Name|NDMP client|Status/ { $1 == "Status" && $2 == "DOWN" ? A=1 : B ? B=B"\n"$1" "$2"\t:\t"$3 : B=$1" "$2"\t:\t"$3 }A{print B;A=0;B=""}' fichier

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 292
    Par défaut
    Bonjour

    Dura fun, sed fun.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ sed -n '/^Drive/h;/NDMP/H;/Status *DOWN/{g;s/.* //Mg;p}' fichier.txt
    TTTT00002_RSFE0010X_44
    XXXX00110

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/12/2012, 18h14
  2. Réponses: 0
    Dernier message: 24/02/2012, 18h53
  3. awk, sed ou autre?
    Par Vil'Coyote dans le forum Linux
    Réponses: 6
    Dernier message: 19/02/2009, 23h07
  4. Crypter, grep et autre commande
    Par bobymaw dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 19/09/2004, 12h29
  5. Réponses: 2
    Dernier message: 16/07/2004, 19h31

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