J'ai un fichier qui est le journal d'un script exécuté dans un cronjob quotidien. Le fichier journal semble comme-Imprimer toutes les lignes entre deux modèles dans le shell
Aug 19
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
Line9
Aug 19
Aug 20
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
Line9
Aug 20
Aug 21
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
Line9
Aug 21
Le journal est écrit par le script en commençant par la date et se terminant à la date et entre tous les journaux sont écrits.
Maintenant, quand j'essaie d'obtenir les journaux pour un seul jour en utilisant la commande ci-dessous -
sed -n '/Aug 19/,/Aug 19/p' filename
il affiche la sortie comme -
Aug 19
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
Line9
Aug 19
Mais si j'essaie d'obtenir les journaux de plusieurs dates, les journaux du dernier jour sont toujours manquants.
Si je Exemple- exécutez la commande
sed -n '/Aug 19/,/Aug 20/p' filename
la sortie ressemble -
Aug 19
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
Line9
Aug 19
Aug 20
Je suis passé par ce site et trouvé quelques précieuses contributions à un problème similaire, mais aucune des solutions travaille pour moi. Les liens sont Link 1
Les commandes que j'ai essayé sont -
awk '/Aug 15/{a=1}/Aug 21/{print;a=0}a'
awk '/Aug 15/,/Aug 21/'
sed -n '/Aug 15/,/Aug 21/p
grep -Pzo "(?s)(Aug 15(.*?)(Aug 21|\Z))"
mais aucune des commandes donne les journaux de la dernière date, toutes les impressions des commandes jusqu'au 1er horodatage comme J'ai montré ci-dessus.
@jantwisted & CWLiu Merci pour cette réponse rapide. –
pourriez-vous s'il vous plaît expliquer la commande car cela résout mon problème –
@CWLiu: À mon humble avis, il ne cherchera que 4 occurrences du 19 août, 20 août. Que diriez-vous s'il y a plus d'occurrences de 20 août etc, il peut ne pas les imprimer alors . – RavinderSingh13