Script shell
Maxime5959
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
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
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
A voir également:
- Script shell
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
3 réponses
Bonjour,
http://www.funix.org/fr/unix/main-unix.php?ref=awk&page=menu
awk '{ if ($NF == "End") next; else if ($NF == "Start") exit; else print $NF }' <(tac fichier.in) | tac d'apres developpez
http://www.funix.org/fr/unix/main-unix.php?ref=awk&page=menu
awk '{ if ($NF == "End") next; else if ($NF == "Start") exit; else print $NF }' <(tac fichier.in) | tac d'apres developpez
Bonjour,
Merci pour ta réponse mais cette méthode me donne tous les champs 3 et pas juste les champs de la dernière session.
Merci pour ta réponse mais cette méthode me donne tous les champs 3 et pas juste les champs de la dernière session.
Salut,
En reprenant l'exemple plus haut issue de developpez.net...
J'ai juste rajouté 2 plages supplémentaires pour que l'exemple soit plus parlant. Il faut juste changer "else print $NF" par "else print $6" dans la syn taxe.
En reprenant l'exemple plus haut issue de developpez.net...
J'ai juste rajouté 2 plages supplémentaires pour que l'exemple soit plus parlant. Il faut juste changer "else print $NF" par "else print $6" dans la syn taxe.
$ cat fich 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 A 2011/08/29 23:00:00 Start A 2011/08/29 23:30:10 champ1 champ2 champ3 A 2011/08/29 23:45:26 champ1 champ2 champ3 A 2011/08/30 00:18:33 champ1 champ2 champ3 A 2011/08/30 01:26:28 champ1 champ2 champ3 A 2011/08/30 01:45:54 End A 2011/09/29 23:00:00 Start A 2011/09/29 23:30:10 champ1 champ2 champ34 A 2011/09/29 23:45:26 champ1 champ2 champ34 A 2011/09/30 00:18:33 champ1 champ2 champ34 A 2011/09/30 01:26:28 champ1 champ2 champ34 A 2011/09/30 01:45:54 End $ awk '{ if ($NF == "End") next; else if ($NF == "Start") exit; else print $6 }' <(tac fich) | tac champ34 champ34 champ34 champ34