Answers:
这种事情比大多数工具要困难得多。GNU awk
和Perl的POSIX模块都为您提供了strftime()
,但没有给您提供strptime()
,这正是您想要的。
无论如何,使用Perl还是很容易的...
$ perl -MDate::Manip -lpe '$_=UnixDate(ParseDate($_), "%Y%m%d")' <<END
> July 29th, 2011
> December 9th, 2010
> END
20110729
20101209
显然还有更多内容,因为您实际上要转换HTML。如果您可以找到带有sed的正则表达式来查找日期字符串,那么您应该能够使用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"
Date::Manip
模块?...我的perl给我一个错误,“无法在@INC中找到Date / Manip.pm ...”。它是一个额外的模块,我需要以某种安装?...我正在使用perl,v5.10.1
perl-Date-Manip
但您的名称将有所不同。您也可以使用cpan
。
libdate-manip-perl
.... @Steven Pritchard:这是一个很好的解决方案,谢谢。
July 29th, 2011
不是公认的格式(July 29, 2011
有效),并且您需要在其中放置大量的shell和sed / awk基础结构。