1

各行にタイムスタンプを出力する大きな Linux ファイルがあり、午前 0 時からマイクロ秒単位でマークされています。awk を使用して YY-mm-d HH:MM:SS.ms 形式に変更する巧妙な短い awk スクリプトを考え出そうとしています (ここで他の投稿を確認しましたが、ほとんどは変換を扱っています)。今日の真夜中以降ではなく、エポックから)。strftime でいくつか試してみましたが、正しい日付と時刻を取得しているようには見えません。ありがとう。

4

1 に答える 1

5

「真夜中からのマイクロ秒」とは、マイクロ秒の整数を意味すると思います

echo 86399123456 | awk '
    BEGIN { midnight = mktime(strftime("%Y %m %d 0 0 0", systime())) }
    {
        seconds = $1 / 1e6
        fraction = $1 % 1e6
        printf "%s.%06d\n", strftime("%Y-%m-%d %T", midnight + seconds), fraction
    }
'

出力

2013-01-23 23:59:59.123456
于 2013-01-23T22:28:19.260 に答える