Linux

在腳本中包括毫秒?

  • April 27, 2016
           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

無論如何我可以在我的腳本中實現相同的功能嗎?

如果您使用兩個非攜帶式的東西是可能的:

有了它,您可以在輸入前加上這樣的時間戳:

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'

引用自:https://unix.stackexchange.com/questions/279572