我有一个文本文件(实际上是Markdown,但足够接近),其日期带有稍微令人讨厌的美国格式%m/%d/%Y
。我希望它在所有地方都采用ISO-8601格式。
我可以轻松地编写一个5-10行的脚本来执行此特定的转换,但是感觉就像某人已经编写了一个更完整的版本。我只是不知道这个假想的工具叫什么。
我想象中的工具将采用任意格式的输入和输出格式(但来自日期时间格式),尽管可能具有通用格式的快捷方式。基本上,我会想要一个知道日期时间的sed
。所以我可能会跑,例如:
$ datecvt -i US -o ISO8601 < myfile.txt > gooddates.txt
$ # ... or ...
$ datecvt -i '%m/%d/%Y' -o '%Y-%m-%d' --inplace myfile.txt
也许用法语法略有不同,但是这种事情。是否存在? (对于OSX,但是几乎所有面向Linux的工具都可以编译,并且已经与Homebrew一起使用了。)
答案 0 :(得分:1)
看来GNU日期将01/02/2018
解释为1月2日
$ date -d '01/02/2018'
Tue Jan 2 00:00:00 EST 2018
因此您可以这样做:
$ date -d '01/02/2018' -I
2018-01-02
或者,如果您想明确输入格式,可以使用perl:
$ perl -MTime::Piece -slE 'say Time::Piece->strptime($date, "%m/%d/%Y")->ymd' -- -date=01/02/2018
2018-01-02
答案 1 :(得分:0)
date
实用程序完成了我想要的一部分。但是仅用于单个字符串,不能处理文件或流。
我知道如何用各种编程语言来完成任务。我希望可以使用命令行实用程序来实现。我决定尝试用Julia写一个“中等程度”的版本。并不是因为它一定是最好的语言选择(启动时间太糟糕了),而是因为我想使用该语言。我确信这种早期尝试不是惯用的或最佳的,但基本上可以达到目标: