Problème d'extraction d'infos dans un fichier

Résolu
rookie_man -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai un petit souci avec un script Shell. J'ai essayé avec sed et grep de le résoudre, mais jusque maintenant sans succès. J'ai plusieurs fichiers que l'on appelera ping1.txt, ping2.txt, ..., pingn.txt chacun contenant les mêmes lignes suivantes (avec les chiffres qui changent bien évidemment :D):

Packets: Sent = 20, Received = 19, Lost = 1 (5% loss),
Approximate round trip times in milli-seconds:
Minimum = 4.10ms, Maximum = 11.79ms, Average = 9.72ms, Jitter Statistical = 1.49ms

De ce fichier, je voudrais récupérer ce qui est avant le % sur la première ligne (cad 5 ici), puis 4.10ms, 11.79ms, 9.72ms et 1.49ms dans la dernière ligne. J'arrive avec grep à récupérer la dernière ligne puis à effacer ce qui me gêne à l'aide de sed.
Le problème est que je souhaite récupérer la valeur "5%" et les autres précédemment citées et les écrire dans une même ligne dans un autre fichier. En fait, j'aurai beaucoup de fichiers similaires à traiter, d'où l'intérêt de ne le mettre que sur une seule ligne, afin de récupérer un fichier simple à étudier ensuite.

Quelqu'un aurait-il une idée pour ça svp? Je galère depuis quelques temps déjà...
Je vous remercie par avance pour votre aide.
Bonne journée!
A voir également:

4 réponses

rookie_man
 
Par exemple, j'ai utilisé grep comme suit:

grep "loss" *ping* > "truc.txt"

Cette commande va m'afficher dans le fichier truc.txt toutes les lignes contenant le mot "loss", en l'occurence ici:
Packets: Sent = 20, Received = 19, Lost = 1 (5% loss),

De même, la même commande avec "Minimum" comme mot-clé me donnera la troisième ligne avec grep.

Le problème est que je souhaite récupérer le chiffre précédent loss avec les infos sur le min et le reste et ce dans la même ligne. Ainsi, j'aurai un fichier tout propre qui contiendrai pour un même fichier ping les infos que je souhaite...Je pense que ça doit être possible vu qu'il y a des flags entourant les termes que je souhaite...

En espérant être clair et que vous puissiez m'aider.
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,
[tmpfs]$ cat plop
Packets: Sent = 20, Received = 19, Lost = 1 (5% loss),
Approximate round trip times in milli-seconds:
Minimum = 4.10ms, Maximum = 11.79ms, Average = 9.72ms, Jitter Statistical = 1.49ms

[tmpfs]$ cat plop2
Packets: Sent = 20, Received = 19, Lost = 1 (10% loss),
Approximate round trip times in milli-seconds:
Minimum = 5.20ms, Maximum = 22.79ms, Average = 4.72ms, Jitter Statistical = 3.49ms

[tmpfs]$ cat foo.sed

#n

1 s/.*(\(.*%\).*/\1/
h
n
n
s/[^=]*= \([^,]*\),[^=]*= \([^,]*\),[^=]*= \([^,]*\),[^=]*= \([^,]*\)/\1 \2 \3 \4/
H
g
s/\n/ /
p

[tmpfs]$ sed  -s -f foo.sed plop* > final

[tmpfs]$ cat final
5% 4.10ms 11.79ms 9.72ms 1.49ms
10% 5.20ms 22.79ms 4.72ms 3.49ms

[tmpfs]$
;-))
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
un p'tit awk

$ cat file
Packets: Sent = 20, Received = 19, Lost = 1 (5% loss),
Approximate round trip times in milli-seconds:
Minimum = 4.10ms, Maximum = 11.79ms, Average = 9.72ms, Jitter Statistical = 1.49ms

Packets: Sent = 20, Received = 19, Lost = 1 (10% loss),
Approximate round trip times in milli-seconds:
Minimum = 5.20ms, Maximum = 22.79ms, Average = 4.72ms, Jitter Statistical = 3.49ms

$ awk 'BEGIN {FS="[(%=,]"} /^Packet/ {loss=$7} /^Minimum/ {print loss "%",$2, $4, $6, $8}' < file
5% 4.10ms 11.79ms 9.72ms 1.49ms
10% 5.20ms 22.79ms 4.72ms 3.49ms
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Je me doutais qu'il y avait effectivement plus simple avec awk, mais bon je maitrise mieux sed ;-))


PS. T'as fini de me taper mes fichiers faignasse ;-)))
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
j'optimise les synergies grâce à la convivialité du copier/coller :-)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention  
 
Encore un Perlien en devenir ;-))
0
rookie_man
 
Ok!!!
Merci beaucoup à tous les deux.
Les deux méthodes sont bien compliquées à comprendre, mais elles font ce que je veux donc c'est nickel!
Je vais essayer de regarder ça avec plus d'attention!!

Merci encore!!
Et bonne soirée à vous!! ;-)
0