在脚本中包含毫秒?

在脚本中包含毫秒?
            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.数据

:: 144146 ::ED.数据

:: 144146 ::ED.数据

我应该得到毫秒值,而不是每行中的 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

如果您使用两个非便携式设备,这是可能的:

这样,您就可以在输入中添加时间戳作为前缀,如下所示:

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'

相关内容