Timestamps

我可以轉換和替換儲存在 iso 8601 格式文件中的 unix 時間嗎?

  • August 19, 2016

我嘗試了在我的似乎是重複的問題中提供的各種解決方案。其中一些實際上並沒有轉換時間,其中一個確實轉換了時間但年份錯誤並且它沒有替換文件中的現有值,它在輸出中添加了一個新列。我在下面接受的答案完全滿足了我的需求。

抱歉,如果這是重複的,我進行了廣泛的搜尋,沒有找到與我的情況相匹配的問題。我經常使用 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

我會使用perl

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

(這裡給出的是當地時間,gmtime而不是localtime格林威治標準時間)

引用自:https://unix.stackexchange.com/questions/304003