スクリプトにミリ秒を含めますか?

スクリプトにミリ秒を含めますか?
            sudo hexdump -v -e '1/1 "%02x\n"' /dev/ttyUSB0 | awk '$1=="ed" {
            getline byte1
            getline byte2
            number = strtonum("0x" substr(byte2,2,1))+2
            data =" ::ED." byte1"."byte2
            while(number-->0)
            {getline byte; data = data"."byte}
            print data"."
            }' |  tr '[a-z]' '[A-Z]'| grep -v '^.....00'

私はこの小さなスクリプトを実行しており、すべての行の静的値ではなくミリ秒単位で各行にタイムスタンプ(リアルタイム値でなければならない)を追加しようとしています。私は次のような結果を期待しています。

::144146::ED.data

::144146::ED.data

::144146::ED.data

各行ごとに144146以外のミリ秒値を取得し、値も異なる必要があります。私が探していることを行うPythonスクリプトがあります。

輸入時期

 def timestamp():
      now = time.time()
      localtime = time.localtime(now)
      milliseconds = '%03d' % int((now - int(now)) * 1000)
      return time.strftime('%Y%m%d%H%M%S', localtime) + milliseconds
      value = timestamp()
      print value

とにかく私のスクリプトで同じ機能を得ることはできますか?

答え1

これは、ポータブルではない2つのデバイスを使用している場合に可能です。

この方法では、次のように入力にプレフィックスとしてタイムスタンプを追加できます。

awk '{"date +%Y%m%d%H%M%S%3N" |& getline timestamp;
      print timestamp,$0;
      close("date +%Y%m%d%H%M%S%3N")}'

(これはclose必須であり、そこにある文字列は、行1で実行されたコマンドと一致する必要があります。詳細については、上記のSO回答を参照してください。)

これをプログラムに組み込むと、次のようになります。

sudo hexdump -v -e '1/1 "%02x\n"' /dev/ttyUSB0 | awk '$1=="ed" {
getline byte1
getline byte2
number = strtonum("0x" substr(byte2,2,1))+2
"date +%Y%m%d%H%M%S%3N" |& getline timestamp;
data = timestamp " ::ED." byte1"."byte2
close("date +%Y%m%d%H%M%S%3N")
while(number-->0)
{getline byte; data = data"."byte}
print data"."
}' |  tr '[a-z]' '[A-Z]'| grep -v '^.....00'

関連情報