Предполагается, что команда даты GNU (встречается в большинстве систем Linux) может принимать выражение даты:
date --date='today-7 days 0000' ;; print 7 days earlier than today at 0000
date --date='26 Sep 2002 00:15:16 -5 hours' ;; closer to your example
Это может немного упростить написание сценариев.
Таким образом, обработка будет : (1) получить дату начала и отформатировать ее (2) найти точку в файле и (3) распечатать. Это можно сделать разными способами, возможно, с помощью простого оператора sed в файле журнала.
РЕДАКТИРОВАТЬ ДОПОЛНЕНИЕ:
В частности, это должно работать: (не гарантируется полное тестирование, но работает!)
#! /bin/sh
set -uh
filename=/var/log/apache2/access_log
lastdate=`tail -1 $filename | sed 's/^.*\[//
s/\].*$//
s/ .*$//
s/\// /g
s/:/ /'`
newdate=`date --date="$lastdate -5 hours" +"%d\/%b\/%Y:%H:"`
awk '/'"$newdate"'/,/^$/ {print $0}' $filename
exit 0