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 :

Boucle awk non finie


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Août 2004
    Messages : 24
    Par défaut Boucle awk non finie
    Bonjour à tous,

    Voilà mon problème:
    J'ai un fichier comme suit:

    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
    mpath25 (xxxxx) yyyyy XXXXXX
    [size=10.0G][features=0][hwhandler=0]
    \_ abc 0 [prio=0][active]
     \_ 1:0:2:4 disk23 66:112 [active][undef]
     \_ 0:0:2:4 disk2 8:224  [active][undef]
    mpath3 (xxxxx) yyyyy XXXXXX
    [size=30G][features=0][hwhandler=0]
    \_ abc 0 [prio=0][active]
     \_ 1:0:5:4 disk12 66:224 [active][undef]
     \_ 0:0:5:4 disk76  65:80  [active][undef]
    mpath24 (xxxxx) yyyyy XXXXXX
    [size=10G][features=0][hwhandler=0]
    \_ abc 0 [prio=0][active]
     \_ 1:0:1:4 disk45 66:32  [active][undef]
     \_ 0:0:0:4 disk43  8:64   [active][undef]
    \_ round-robin 0 [prio=0][enabled]
     \_ 1:0:0:4 disk67 65:208 [active][undef]
     \_ 0:0:1:4 disk34  8:144  [active][undef]
    Dans lequel je dois récupérer les champs en rouge.

    Voici mon code en awk :
    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
    #!/bin/awk -f
    BEGIN {FS = " "
    i=0}
    {       if($4 == "IBM,2145")
                    {
                    print "path: "$1"    sur baie "$4
     
                    getline
                    getline
     
                    while( $2 ~ /abc/)
                            {
                            getline
                            while( $3 ~ /disk*/)
                                    {
                                    print "disque: "$3
                                    getline
                                    }
                            }
                    }
    J'execute mon script tout simplement: ./monscript monfichier
    Le problème est que lorsque j'arrive à la fin du fichier, je ne sors jamais de ma seconde boucle et le script m'affiche en boucle "disque : disk34"
    En fait, awk ne s'arrête pas et ne trouve apparemment pas la fin de fichier.

    Ais-je fait une erreur?

    Merci d'avance pour votre aide

    Quelques précisions:
    OS: Linux
    Shell : Ksh
    Programmeur: Débutant

  2. #2
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Ça se passera mieux en gérant la fin de fichier comme suit :

    remplacer chaque getline par :
    if (getline == 0) exit

    Pour un débutant, c'est un petit awk pas mal du tout

  3. #3
    Membre averti
    Inscrit en
    Août 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Août 2004
    Messages : 24
    Par défaut
    Merci BlaireauOne, le "if (getline == 0) exit" fonctionne bien, je n'ai plus de boucle.
    Et merci pour le compliment, je fait ce que je peux.

    Mais bon, attendez vous à me voir revenir d'ici peu

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

Discussions similaires

  1. [XL-2003] Boucle FOR non linéaire
    Par JeanSairien dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/04/2010, 11h58
  2. Streaming RTSP d'un fichier "non fini"
    Par cereal dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 29/03/2010, 11h18
  3. [WD10] fin de programme non fini !
    Par goute dans le forum WinDev
    Réponses: 6
    Dernier message: 21/09/2009, 16h54
  4. Colonne de largeur non finie dans une DBGrid
    Par cbegood dans le forum Bases de données
    Réponses: 17
    Dernier message: 04/11/2008, 10h07
  5. Automatisation de mesure, code non fini
    Par sennju dans le forum C
    Réponses: 1
    Dernier message: 24/01/2008, 22h06

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