Outra solução perl
usa o módulo Time::Piece
como a resposta da @ choroba:
$ perl -MTime::Piece -pe '
BEGIN {$today = localtime->ymd." ".localtime->hms}
s!($1)!<font style=BACKGROUND-COLOR:red>$1</font>!g
if /<td>(.+?)<\/td>/g and $1 lt $today;
' in.txt
asfsaf<td><font style=BACKGROUND-COLOR:red></font> kjycasfd
FKZF<td>2014-05-09 lkjafsa
sdfg<td>2014-05-13 asdf
sfjlaslfsaljf <td><font style=BACKGROUND-COLOR:red></font> DIJIZLOF
Atualizar
Se você tiver várias datas anteriores em uma linha, tente:
$ perl -MTime::Piece -pe '
BEGIN {$today = localtime->ymd." ".localtime->hms}
@days = $_ =~ /<td>(.+?)<\/td>/g;
for $d (@days) {
$_ =~ s!$d!<font style=BACKGROUND-COLOR:red>$d</font>! if $d lt $today;
}' in.txt
<tr><td><font style=BACKGROUND-COLOR:red>2014-04-24 00:01</font></td><td>2014-06-24 00:01</td><td><font style=BACKGROUND-COLOR:red>2014-05-13 00:00</font></td></tr>
Explicação
- Salvamos todas as datas em uma linha na matriz
@days
. - Para cada data, verificamos se ela é menor que a de hoje e substituí-la.