やりたいこと
以下のような13桁のUNIXタイムスタンプ(エポックミリ秒)を
1625566674036
対応する日付データに変換する。
Tue Jul 6 19:17:54 2021
環境情報
- sed (GNU sed) 4.4
- GNU Awk 5.1.0
やり方
sedコマンドでミリ秒を表現してprintのstrftimeで時刻データに変換する。
$ echo 1625566674036 | sed -e 's/^\(.\{10\}\)/\1./' | awk '{print strftime("%c",$1)}'
出力結果は以下。
Tue Jul 6 19:17:54 2021
以下、補足です。
補足
ミリ秒表記のためドットを挿入するのがポイントで今回は13桁固定と考えて左から10文字目に"."を挿入しています。
例えば左から3文字目に挿入する場合は以下。
$ echo 0123456789 | sed -e 's/^\(.\{3\}\)/\1./' 012.3456789
あとはこのデータを日付情報に変換しますがawk以外にもdateコマンドでも同様のことは可能です。
$ date --date "@1625566674.036" Tue Jul 6 19:17:54 JST 2021
以上、ご参考になれば幸いです。