Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/08/2011, 21h35   #1
Nouveau Membre du Club
 
Inscription : août 2011
Messages : 30
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 30
Points : 30
Points : 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
spartiates59 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2011, 00h28   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
Bonjour,

tac tac, et voilà !
Code :
awk '{ if ($NF == "End") next; else if ($NF == "Start") exit; else print $NF }' <(tac fichier.in) | tac
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2011, 08h51   #3
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
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 : 3 534
Points : 7 743
Points : 7 743
ou pour éviter les pipes avec sed :
Code :
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 :
sed  "/A 2011.*29.*Start/,/A 2011.*30.*End/ s/.*\( .*$\)/\1/;1d;/End/d" t
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 13h13   #4
Membre éclairé
 
Avatar de FRUiT
 
Homme
Inscription : février 2011
Messages : 83
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2011
Messages : 83
Points : 326
Points : 326
Code :
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.
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
FRUiT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 18h15   #5
Nouveau Membre du Club
 
Inscription : août 2011
Messages : 30
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 30
Points : 30
Points : 30
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
spartiates59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h05.


 
 
 
 
Partenaires

Hébergement Web