シェルで精度を使用するためのタイムスタンプの生成(Busybox)


1

%N日付オプションを使用せずにマイクロ秒の精度でUnixシェルでテキストタイムスタンプを生成したい(このオプションを持たないbusyboxを使用している)タイムスタンプには形式が必要です"<seconds since epoc>.<microseconds>"

awk -f ./myawkscript.awk < /param | sed 's/$/\[<TIMESTAMP WOULD GO HERE>].'

したがって、目的の出力は次のようになります。

[1305638345.123456] awk script output

を使用して十分に簡単にepocを取得できるdate +"%s"ので、私の質問は、シェルからマイクロ秒を取得する方法はありますか?

回答:


2
#include <stdio.h>
#include <sys/time.h>

int main() {
    struct timeval t;

    if (gettimeofday(&t, NULL) == 0)
        printf("%d.%06u\n", t.tv_sec, t.tv_usec);

    return 0;
}

コンパイルする cc -o timestamp timestamp.c

完全を期すために:clock_gettime()ナノ秒を返すことができawkますが、スクリプトを使用すると、とにかくその精度に達しません。


0

busybox dateは%N(ナノ秒)フィールドを受け入れますか?

time=$(date "+%s.%N")

「ナノネス」を削除するには

time=$(date "+%s.%N" | cut -c 1-17)

または

time=$(date "+%s.%N"); time=${time%???}

2
質問を引用するには、「%N日付オプションを使用せずに(このオプションを持たない、より小さなUnixツールセットであるbusyboxを使用しています)」
grawity
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.