ユニバーサルテキストファイルのすべてのUnixタイムスタンプ(ミリ秒単位)を人が読める日付に変換します。

ユニバーサルテキストファイルのすべてのUnixタイムスタンプ(ミリ秒単位)を人が読める日付に変換します。

プレーンテキストファイルのUnix Epoch(ミリ秒)を通常の日付に変更したいと思います。私はbash、sed、awk、perlのソリューションを受け入れます。

サンプルファイル1(13桁のみ):

Foo bar 1397497040418 foo 1526 bar foobar, bar 1397497060518.
Bar, 1357407040418 foo 10 foobar.

私は次のような出力が欲しい。

Foo bar 2014-04-14 19:37:20 foo 1526 bar foobar, bar 2014-04-14 19:37:40.
Bar, 2013-01-05 18:30:40 foo 10 foobar.

私の試みが失敗しました:

sed -E "s/([0-9]{10})/date -d @\1/;e" file1

どんなアイデアがありますか?

ありがとうございます。

ベストアンサー1

入力ファイルを使用してください。

perl -MTime::Piece -pe '
    s{ \b (\d{10}) \d{3}\b }
     { localtime($1)->strftime("%F %T") }xge
' file1
Foo bar 2014-04-14 13:37:20 foo 1526 bar foobar, bar 2014-04-14 13:37:40.
Bar, 2013-01-05 12:30:40 foo 10 foobar.

おすすめ記事