AWK で unix タイムスタンプを hh:mm:ss:SSS (ここで SSS はミリ秒) に変換します。

AWK で unix タイムスタンプを hh:mm:ss:SSS (ここで SSS はミリ秒) に変換します。

AWKでUnixタイムスタンプをhh:mm:ss:SSS(ここでSSSはミリ秒)に変換する方法。

たとえば、

echo 1456478048306 > time
cat time | awk ....... > readable_time_format

ベストアンサー1

GNUの使用date:

d=1456478048306
s=${d%???}
ms=${d#"$s"}

date -d "@$s" +"%F %T.$ms %z"
# or:
date -d "$s.$ms" '+%F %T.%3N %z'

BSDの使用date:

date -r "$s" +"%F %T.$ms %z"

awkGNUおよび最新バージョンを使用mawk(以降1.3.4 20121129):

echo 1456478048306 | awk '{
  print strftime("%F %T." substr($0,length-2) " %z", substr($0, 1, length-3))}'

移植性のために、perlおそらく最良の方法は次のとおりです。

echo 1456478048306 | perl -MPOSIX -lne '
  print strftime "%F %T.$2 %z", localtime $1 if /(.+)(.{3})/'

私が好むより伝統的で明示的な形式は次のとおりです。

2016-02-26 09:14:08.306 +0000

もちろんstrftime、好きなようにフォーマットを調整できます。

おすすめ記事