É possível usar duas coisas não portáteis:
- E / S bidirecional do GNU awk (consulte resposta relevante do StackOverflow );
- saída em milissegundos com
date
(consulte esta resposta ServerFault ).
Com isso, você pode prefixar a entrada com timestamps assim:
awk '{"date +%Y%m%d%H%M%S%3N" |& getline timestamp;
print timestamp,$0;
close("date +%Y%m%d%H%M%S%3N")}'
(Observe que close
é obrigatório e a string deve corresponder ao comando executado na linha 1. Consulte a resposta SO acima para obter detalhes.)
Incorporando isso ao seu programa, você terá:
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'