Suponho que suas datas sejam MM / DD / AAAA (e não DD / MM / AAAA). Eu suponho que você quer que o cutoff seja especificado externamente (hard coded) e não baseado na primeira linha.
Você pode fazer isso no gawk (GNU awk):
awk '
BEGIN { cutoff = mktime("2018 2 3 17 0 0");
if (cutoff < 0) { print "Bad cutoff date."; exit; } }
{
if (split($1, da, "/") == 3 && split($2, ti, ":") == 3) {
thisdate = mktime(da[3] " " da[1] " " da[2] " " ti[1] " " ti[2] " " ti[3])
if (thisdate >= 0 && thisdate < cutoff) print
}
}
'
A função mktime
do gawk converte uma string de hora no formato "AAAA MM DD hh mm ss" para uma hora do sistema.
Começamos (BEGIN) convertendo 2/3/2018 17:00:00 para uma hora do sistema.
Então, para cada linha, verificamos que ela contém uma data e hora válidas, convertemos e comparamos com o ponto de corte.
É claro que, se seu arquivo for realmente separado por vírgulas, você deve usar -F,
.