Uma possibilidade que não envolve a bifurcação é usar a saída socat
verbose em vez dos dados. Minha versão de socat -v
inclui o tamanho dos dados na saída detalhada, para que você saiba onde termina. Por exemplo,
mkfifo mypipe
while sleep 3
do printf "%sNONEWLINE" $RANDOM
done |
socat -u - UDP4:localhost:9999 &
socat -u -v UDP-RECV:9999 - >/dev/null 2>mypipe &
cat -uv mypipe
produzirá antes de cada item de dados (por exemplo, 9430NONEWLINE
), um cabeçalho iniciando >
com a data e um comprimento.
> 2018/07/28 10:29:33.965222 length=13 from=0 to=12
9430NONEWLINE> 2018/07/28 10:29:36.968335 length=14 from=13 to=26
26947NONEWLINE> 2018/07/28 10:29:39.971025 length=14 from=27 to=40
15126NONEWLINE