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:
Ceci me donne le fichier suivant (file_ping.txt):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 grep -A "Lost" *ping* > "file_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
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: --
Les ... sont sans importance ici, j'y substitue juste ma chaine de caractère afin de récupérer les infos importantes.
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"
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:
Je me demandais donc comment simplement passer à la ligne dans cette situation où la perte est totale et ainsi avoir simplement:
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
[/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.![]()
Partager