将日期“2011 年 7 月 29 日”更改为“20110729”

将日期“2011 年 7 月 29 日”更改为“20110729”

我有很多包含日期和格式的 HTML 文件July 29th, 2011

我想将日期格式更改July 29th, 201120110729December 9th, 2010to20101209等。

我认为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"

相关内容