Ler a saída serial, remover nul e salvar em arquivo

0

No Cygwin, estou tentando ler a entrada da porta serial, filtrá-la para remover caracteres nulos e salvar a saída em um arquivo. Algo como o seguinte, que resulta em um arquivo de log vazio:

cat /dev/ttyS1 | tr -d '\000' >myfile.log

Isso mostra stdout no terminal:

cat /dev/ttyS1 | tr -d '\000'

Eu tentei usar stdbuf -oL -eLpor esta postagem , sem sucesso.

Pontos bônus se você conseguir que ele funcione com o stdout de filtragem do grep no terminal (ou seja, registre tudo no arquivo, mas veja apenas a saída filtrada no terminal).

cat /dev/ttyS1 | tr -d '\000' | tee myfile.log | egrep --line-buffered "WARN|ERROR"

Nota: A porta serial que estou usando é um adaptador serial USB FTDI.

mrtumnus
fonte
Faz /dev/ttyS1 existir ?
matzeri
eu usei /dev/ttyS1 como um exemplo. A porta serial que estou usando nesta máquina em particular é diferente e existe (eu posso ler a entrada usando cat /dev/ttyS1 ).
mrtumnus
E se cat /dev/ttyS1 obras e cat /dev/ttyS1 | tr -d '\000' produz nada parece sua porta serial está produzindo apenas nulo
matzeri
@matzeri Não, está produzindo texto regular com nulos inseridos antes de "\ r \ n" em cada linha. Eu acho que pode ser devido a fonte dos dados seriais é escrito em C, que usa terminadores nulos para seqüências de caracteres. Mas vamos supor que não tenho controle sobre isso. Como eu removo os nulos e salvo no arquivo?
mrtumnus
Funciona se você dividir a ação em dois: cat /dev/ttyS1 > tempfile e cat tempfile | tr -d '\000' ?
matzeri