se connecte entre deux dates i unix

J’essaie de récupérer les journaux entre deux dates spécifiques à partir d’un gros fichier journal.

Mon format de journal est

[EFMS] DEBUG [07 Apr 2014 11:07:35,225] EfmsWebSubjectFactory.createSubject(71) | HTTP Session id: B37D367C02B5411489152F5EF4D740B3 [EFMS] DEBUG [07 Apr 2014 11:07:35,226] EfmsWebSubjectFactory.createSubject(79) | Subject Context is associated to principal: None [EFMS] DEBUG [07 Apr 2014 11:07:35,226] EfmsWebSubjectFactory.createSubject(85) | Created new subject instance for user null [EFMS] DEBUG [07 Apr 2014 11:07:35,228] LoginController.login(53) | Login page requested [EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFactory.createSubject(71) | HTTP Session id: B37D367C02B5411489152F5EF4D740B3 [EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFactory.createSubject(79) | Subject Context is associated to principal: None [EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFactory.createSubject(85) | Created new subject instance for user null 

et j’essaye de cette façon

sed -n ‘/ [EFMS] DEBUG [06 Apr 2014 00:00:00 /, / [EFMS] DEBUG [07 Apr 2014 00: 00: 00 / p’ catalina.logs

et ça ne marche pas, pourriez-vous m’aider s’il vous plait.

Vous n’avez pas besoin de sed , vous avez besoin de grep . En outre, votre requête est trop compliquée, si vous avez besoin d’un événement qui s’est produit le 6, vous ne pouvez rechercher que le 6ème:

 grep "06 Apr 2014" catalina.logs 

Si vous devez spécifier un nombre de jours plus important, vous pouvez utiliser une expression régulière pour le faire, par exemple:

 grep "[1-3][0-9] Mar 2014" catalina.logs 

cherchera toutes les entrées à partir de mars.

Il n’y aura pas de moyen facile d’parsingr l’horodatage sans les convertir en secondes et trouver une plage. Si vous cherchez juste une journée entière, vous pouvez faire:

 sed -n '/06 Apr 2014/,/07 Apr 2014/p' catalina.logs 

Vous devez échapper aux méta-caractères comme [ et ] . La mise en place de l’horodatage complet pourrait ne pas fonctionner s’il n’existe pas dans vos journaux.

Si vous voulez des plages de dates arbitraires, vous pouvez le faire avec le script awk suivant:

 { mm = (index ("JanFebMarAprMayJunJulAugSepOctNovDec", $4) + 2) / 3; if (mm < 10) { mm = "0"mm; }; dd = $3; gsub (/\[/, "", dd); date = $5"-"mm"-"dd; if ((date >= from) && (date <= to)) { print; }; } 

Cela fonctionne en convertissant la date dans le format correct pour la comparaison ( yyyy-mm-dd ), et en imprimant seulement les lignes entre les dates données sur la ligne de commande.

Une transcription suit dans laquelle vous ne pouvez voir que les dates comsockets entre et to (les première et dernière lignes sont supprimées car elles ne correspondent pas à la plage souhaitée):

 pax> cat input.txt [EFMS] DEBUG [05 Feb 2014 11:07:35,225] EfmsWebSubjectFac... [EFMS] DEBUG [06 Mar 2014 11:07:35,225] EfmsWebSubjectFac... [EFMS] DEBUG [07 Apr 2014 11:07:35,225] EfmsWebSubjectFac... [EFMS] DEBUG [07 Apr 2014 11:07:35,225] EfmsWebSubjectFac... [EFMS] DEBUG [07 Apr 2014 11:07:35,226] EfmsWebSubjectFac... [EFMS] DEBUG [07 Apr 2014 11:07:35,226] EfmsWebSubjectFac... [EFMS] DEBUG [07 Apr 2014 11:07:35,228] LoginController.l... [EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFac... [EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFac... [EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFac... [EFMS] DEBUG [07 May 2014 11:07:35,225] EfmsWebSubjectFac... [EFMS] DEBUG [07 Aug 2014 11:07:35,225] EfmsWebSubjectFac... pax> awk -vfrom=2014-03-01 -vto=2014-05-08 -f filter.awk input.txt [EFMS] DEBUG [06 Mar 2014 11:07:35,225] EfmsWebSubjectFac... [EFMS] DEBUG [07 Apr 2014 11:07:35,225] EfmsWebSubjectFac... [EFMS] DEBUG [07 Apr 2014 11:07:35,225] EfmsWebSubjectFac... [EFMS] DEBUG [07 Apr 2014 11:07:35,226] EfmsWebSubjectFac... [EFMS] DEBUG [07 Apr 2014 11:07:35,226] EfmsWebSubjectFac... [EFMS] DEBUG [07 Apr 2014 11:07:35,228] LoginController.l... [EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFac... [EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFac... [EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFac... [EFMS] DEBUG [07 May 2014 11:07:35,225] EfmsWebSubjectFac...