스크립트에 밀리초를 포함하시겠습니까?

스크립트에 밀리초를 포함하시겠습니까?
            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

이는 휴대용이 아닌 장치 두 개를 사용하는 경우 가능합니다.

이 방법을 사용하면 다음과 같이 타임스탬프를 입력에 접두사로 추가할 수 있습니다.

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'

관련 정보