Bonjour à tous,
Voilà mon problème:
J'ai un fichier comme suit:
Dans lequel je dois récupérer les champs en rouge.
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]
Voici mon code en awk :
J'execute mon script tout simplement: ./monscript monfichier
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 } } }
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![]()
Partager