Eu usaria perl para isso, para analisar o timestamp em cada linha:
$ 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
Esta versão é um pouco mais eficiente, pois deixa de analisar o registro de data e hora depois que a data de início é vista (presume que o arquivo está aumentando a ordem cronológica):
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