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

Linux Discussion :

Récupérer plusieurs éléments dans un fichier


Sujet :

Linux

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Récupérer plusieurs éléments dans un fichier
    Bonjour à tous,

    Je suis confronté à un problème sous Linux, en script Shell. J'ai essayé à plusieurs reprises avec sed et grep, mais jusque maintenant sans succès. J'ai un fichier qui contient plusieurs lignes, comme par exemple ce qui suit:

    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 "5%" dans la première ligne, 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? J'ai essayé de le faire par moi-même, mais je galère depuis quelques temps déjà...
    Je vous remercie par avance pour votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    grep Packets toto.txt | sed -e 's/.*(\(.*\) .*/\1/g'
    grep Minimum toto.txt | sed -e 's/.* = \(.*\)ms.* = \(.*\)ms.* = \(.*\)ms.* = \(.*\)ms.*/\1 \2 \3 \4/g'
    si tes messages ont toujours la meme structure c est bon

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Je te remercie Ashin pour ta réponse.
    Le souci est que en appliquant ces deux commandes consécutivement sur plusieurs fichiers (ping1.txt, ping2.txt et ping3.txt), j'obtiens un résultat de ce type :
    5%
    10%
    5%
    4.10 11.79 9.72 1.49
    30 11.79 9.72 1.49
    4.10 11.79 9.72 1.49

    Donc, en fait, ça me récupère d'abord les pourcentages sur les premières lignes du fichier, puis les autres infos sur les min, max, etc sur les dernières lignes. Je souhaiterai l'avoir plutôt de la façon suivante:
    5% 4.10 11.79 9.72 1.49
    10% 30 11.79 9.72 1.49
    5% 4.10 11.79 9.72 1.49

    Cela m'aiderait à traiter les fichiers de sortie de façon bien plus efficace.
    Une idée pour ça par hasard?

    Merci d'avance!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    genre comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/sh
     
    while read variable
    do 
    echo $variable | grep Packets | sed -e 's/.*(\(.*\) .*/\1/' | tr -d '\n' 
    echo $variable | grep Minimum | sed -e 's/.* = \(.*\)ms.* = \(.*\)ms.* = \(.*\)ms.* = \(.*\)ms.*/ \1 \2 \3 \4/'
    done < ~/monfichier.txt

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Ahhh merci beaucoup Ashin!!!!
    J'obtiens exactement ce que je veux.

    Encore merci pour ton aide, ça va me permettre d'avancer un peu maintenant!

    Bonne soirée!!!

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

Discussions similaires

  1. récupérer un seul élément dans un fichier xml
    Par boboss76 dans le forum VBScript
    Réponses: 4
    Dernier message: 08/12/2010, 09h35
  2. Récupérer plusieurs balises dans un fichier XML
    Par sandddy dans le forum Langage
    Réponses: 3
    Dernier message: 28/01/2009, 14h48
  3. [XPATH] Récupérer un élément dans un fichier XML
    Par be_tnt dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 07/06/2007, 19h49
  4. 1 SOLUTION : plusieurs anim dans un fichier x
    Par heidi79 dans le forum DirectX
    Réponses: 1
    Dernier message: 28/08/2003, 09h19
  5. Plusieurs animations dans un fichier .X
    Par heidi79 dans le forum DirectX
    Réponses: 6
    Dernier message: 25/08/2003, 02h26

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