Я бы использовал для этого perl, чтобы проанализировать отметку времени в каждой строке:
$ cat file
June 5 2018 00:00:00 do not print
July 29 2018 20:59:59 do not print
July 29 2018 21:00:00 print me
July 29 2018 21:00:01 print me
$ perl -MTime::Piece -sane '
BEGIN {
$start = Time::Piece->strptime($startdate, "%B %e %Y %T");
}
# the string "@F[0..3]" is the first 4 words on the line
$time = Time::Piece->strptime("@F[0..3]", "%B %e %Y %T");
print if $time >= $start;
' -- -startdate="July 29 2018 21:00:00" file
July 29 2018 21:00:00 print me
July 29 2018 21:00:01 print me
Эта версия несколько более эффективна, так как перестает анализировать отметку времени после того, как начальная дата была замечена (предполагается, что файл находится в возрастающем хронологическом порядке):
perl -MTime::Piece -sane '
BEGIN {
$start = Time::Piece->strptime($startdate, "%B %e %Y %T");
}
unless ($go) {
$time = Time::Piece->strptime("@F[0..3]", "%B %e %Y %T");
$go = $time >= $start;
}
print if $go;
' -- -startdate="July 29 2018 21:00:00" file