我有很多包含日期和格式的 HTML 文件July 29th, 2011
我想将日期格式更改July 29th, 2011
为20110729
、December 9th, 2010
to20101209
等。
我认为sed
可能有效,但由于其间接序列,仍然找不到解决方案。
答案1
这种事情比大多数工具要困难得多。GNUawk
和 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"