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

Shell et commandes GNU Discussion :

Script shell - problème avec date


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 30
    Par défaut Script shell - problème avec date
    Bonjour,
    j'aimerai exploiter les logs d'un logiciel sous linux dans un but statistique.
    Le logiciel écrit des logs tous les jours dans le même fichier. Le programme commence à écrire les logs à 23H et peut terminer d'écrire vers 02H. A chaque début d'écriture de log le logiciel commence par écrire start et termine en écrivant end.
    Exemple de log :
    A 2011/07/29 23:00:00 Start
    A 2011/07/29 23:30:10 champ1 champ2 champ3
    A 2011/07/29 23:45:26 champ1 champ2 champ3
    A 2011/07/30 00:18:33 champ1 champ2 champ3
    A 2011/07/30 01:26:28 champ1 champ2 champ3
    A 2011/07/30 01:45:54 End
    J'aimerai que mon script récupère la valeur des champ3 pour la dernière session donc ici entre le 29/07 et 30/07
    J'ai donc pour le moment ça :
    cat fichier.log | grep 'champ1' | awk '{print $6}' mais la je récupère tous les champ3 de tous les jours.
    Pouvez-vous m'indiquer comment faire pour récupérer la valeurs des champs 3 de la dernière session ?
    Par avance merci

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    Par défaut
    Bonjour,

    tac tac, et voilà !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{ if ($NF == "End") next; else if ($NF == "Start") exit; else print $NF }' <(tac fichier.in) | tac
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    ou pour éviter les pipes avec sed :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [fpu@ln ~] sed  "/Start/,/End/ s/.*\( .*$\)/\1/;/Start/d;/End/d" t
     champ3
     champ3
     champ3
     champ3
    [fpu@ln ~]
    ce qui revient donc à faire
    entre Start et End remplacer toute ligne par son dernier mot, puis épurer la ligne contenant start et la ligne contenant end
    et bien sur on peut faire par date ça marche aussi si le fichier contien plusieurs dates
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed  "/A 2011.*29.*Start/,/A 2011.*30.*End/ s/.*\( .*$\)/\1/;1d;/End/d" t

  4. #4
    Membre expérimenté Avatar de FRUiT
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 83
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    NAME
           tac - concatenate and print files in reverse
     
    SYNOPSIS
           tac [OPTION]... [FILE]...
     
    DESCRIPTION
           Write each FILE to standard output, last line first.  With no FILE, or when FILE is -, read standard input.
    On en apprend tous les jours

    Merci m'sieur.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 30
    Par défaut
    Bonjour,

    Merci pour vos réponse,

    Je viens de tester la solution ci-dessous, la solution me convient presque mais j'aurais dû préciser que derrière champ3 il y a encore d'autres champs. La ligne ci-dessous me renvoie donc le dernier champ de chaque ligne mais de toutes les sessions. Est-ce possible d'avoir le champ3 de la dernière session ?

    Par avance merci

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

Discussions similaires

  1. script shell: problème avec le caractère espace
    Par Le fut dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 04/05/2017, 11h49
  2. Problème avec date dans requête
    Par alain94 dans le forum Access
    Réponses: 2
    Dernier message: 22/05/2006, 07h49
  3. Script SHELL/UNIX avec mysql
    Par HacHHacH dans le forum Linux
    Réponses: 6
    Dernier message: 06/04/2006, 23h48
  4. Problème avec "Date()" en mode runtime
    Par bwalbourg dans le forum Runtime
    Réponses: 1
    Dernier message: 25/01/2006, 10h51
  5. [MySQL] Problème avec DATE SUB et INTERVAL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/01/2006, 00h36

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