ISO 8601形式ファイルに保存されているUnix時間を変換して置き換えることはできますか? [コピー]

ISO 8601形式ファイルに保存されているUnix時間を変換して置き換えることはできますか? [コピー]

私の質問に提供されているさまざまな解決策を試しましたが、私の解決策は重複しているようです。そのうちのいくつかは実際には時間を変換せず、そのうちの1つは時間を変換しますが、年が間違ってファイルの既存の値を変更する代わりに、出力に新しい列を追加します。以下で私が受け入れた答えは私が必要とするものを正確に行います。

重複したらすみません。たくさん検索しましたが、私の状況に合った質問が見つかりませんでした。私は多くのLinuxを使用していますが、私の「プログラミング」技術は単純なシェルスクリプトに限定されています。

epoch(例:Unix)形式で作成された日付/タイムスタンプ列を含むcsvファイルがあります。以下の例をご覧ください。 Unix時間をISO 8601形式に変換して交換したいです。

既存の出力の例:

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'

(ここに提供されている現地時間はGMT時間ではgmtimeありません)localtime

おすすめ記事