Bonjour à tous,

Je suis en train de travailler sur un script en bash qui fait récupère des chaines de caractères dans un fichier de type ping. Je vais essayer de donner ma marche à suivre avant d'expliquer mon problème...en espérant être clair.

Supposons que j'ai un répertoire dir qui contiennent des fichiers de type ping. Je fais la commande suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
grep -A "Lost" *ping* > "file_ping.txt"
Ceci me donne le fichier suivant (file_ping.txt):
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
 
--
20358-2009-03-26-02.59-ping.txt: Packets: Sent: 20, Received:20, Lost=0 (0%loss)
20358-2009-03-26-02.59-ping.txt: Approximate time in milli-seconds
20358-2009-03-26-02.59-ping.txt: Minimum=2.40ms, Maximum=3.20ms, Average=3.01ms, Jitter statistical=1.49ms
20358-2009-03-26-02.59-ping.txt:
--
20358-2009-03-26-03.59-ping.txt: Packets: Sent: 20, Received:20, Lost 0 (0%loss)
20358-2009-03-26-03.59-ping.txt: Approximate time in milli-seconds
20358-2009-03-26-03.59-ping.txt: Minimum=2.32ms, Maximum=3.10ms, Average=2.98ms, Jitter statistical=1.25ms
20358-2009-03-26-03.59-ping.txt:
--
20358-2009-03-26-03.59-ping.txt: Packets: Sent: 20, Received:0, Lost 0 (100%loss)
20358-2009-03-26-02.59-ping.txt:
--
20358-2009-03-26-03.59-ping.txt: Packets: Sent: 20, Received:20, Lost 0 (0%loss)
20358-2009-03-26-03.59-ping.txt: Approximate time in milli-seconds
20358-2009-03-26-03.59-ping.txt: Minimum=2.32ms, Maximum=3.10ms, Average=2.98ms, Jitter statistical=1.25ms
20358-2009-03-26-03.59-ping.txt:
--
Mon but est de récupérer le loss, le min, max, average et gigue. J'y arrive par le biais d'une boucle de la façon suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
cat "file_ping.txt" \
| while read var
	do 
	echo $var | grep "Lost" | sed -e 's/..........' | tr -d '\n'
	echo $var | grep "Minimum" | sed -e 's/..........'
done >> "ping.txt"
Les ... sont sans importance ici, j'y substitue juste ma chaine de caractère afin de récupérer les infos importantes.
Ceci a pour résultat un fichier de plusieurs lignes; sur chacune d'elle y sont contenus la perte, le min, le max, la moy et la gigue pour un seul fichier.

Le problème ici est que si la perte est totale (loss=100%), dans le fichier n'est contenu que la perte et rien d'autre. Du coup, le min et autres n'y sont pas. Et donc, je me retrouve avec une ligne qui contient 100% et la ligne suivante comme suit:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
0% 2.40 3.20 3.01 1.49
0% 2.32 3.10 2.98 1.25
100%0% 2.32 3.10 2.98 1.25
Je me demandais donc comment simplement passer à la ligne dans cette situation où la perte est totale et ainsi avoir simplement:

[/CODE]
0% 2.40 3.20 3.01 1.49
0% 2.32 3.10 2.98 1.25
100%
0% 2.32 3.10 2.98 1.25
[/CODE]

Je ne sais pas si j'ai été clair; le problème me semble simple mais je ne sais pas comment faire simplement pour résoudre ça de façon automatique dans un fichier pouvant contenir un nombre d'informations relativement important.
Si quelqu'un pouvait me donner un indice, ce serait sympa!
Je vous en remercie par avance.