我可以转换和替换存储在 iso 8601 格式文件中的 unix 时间吗?

我可以转换和替换存储在 iso 8601 格式文件中的 unix 时间吗?

我尝试了在我的问题中提供的各种解决方案,但我的解决方案似乎是重复的。其中一些实际上并没有转换时间,其中一个确实转换了时间,但年份错误,并且它没有替换文件中的现有值,而是在输出中添加了一个新列。我在下面接受的答案完全满足了我的需求。

抱歉,如果这是重复的,我进行了大量搜索,但没有找到符合我情况的问题。我经常使用 Linux,但我的“编程”技能仅限于简单的 shell 脚本。

我有一个 csv 文件,其中有一列以纪元(即 Unix)格式编写的日期/时间戳。请参阅下面的示例。我想用 ISO 8601 格式转换并替换 Unix 时间。

现有输出示例:

foo, 1439856000000000000, foo, foo
foo, 1439856360000000000, foo, foo
foo, 1439856720000000000, foo, foo
foo, 1439857080000000000, foo, foo

所需输出的示例:

foo, YYYY-MM-DD HH:MM:SS.nnnnnnnnn, foo, foo
foo, YYYY-MM-DD HH:MM:SS.nnnnnnnnn, foo, foo
foo, YYYY-MM-DD HH:MM:SS.nnnnnnnnn, foo, foo
foo, YYYY-MM-DD HH:MM:SS.nnnnnnnnn, foo, foo

答案1

我会用perl

perl -MPOSIX -pe 's{\b\d{10}(?=\d{9}\b)}{
  strftime("%Y-%m-%d %T.", localtime $&)}ge'

(这里给出的是当地时间,gmtime而不是localtimeGMT 时间)

相关内容