Esse tipo de coisa é muito mais difícil do que deveria ser com a maioria das ferramentas. O GNU awk
e o módulo POSIX do Perl fornecem um strftime()
, mas não um strptime()
, que é o que você deseja.
De qualquer forma, ainda é bem fácil com o Perl ...
$ perl -MDate::Manip -lpe '$_=UnixDate(ParseDate($_), "%Y%m%d")' <<END
> July 29th, 2011
> December 9th, 2010
> END
20110729
20101209
Obviamente, há mais, já que você realmente quer converter o HTML. Se você puder descobrir um regex com sed que funcione para encontrar as strings de data, você deve ser capaz de fazer algo muito semelhante com o Perl.
$ perl -MDate::Manip -lpe 's/(")([^"]+)(")/$1 . UnixDate(ParseDate($2), "%Y%m%d") . $3/ge' <<END
dates enclosed "July 29th, 2011" in quotes
"December 9th, 2010"
END
dates enclosed "20110729" in quotes
"20101209"