Tente:
python command | pv -l -e -s 2g -f 2>pv.log
tr '\r' '\n' <pv.log | grep -v '^[[:space:]]*$' | tail -n1
Explicações:
-
Você pode despejar as impressões de
pv
em um arquivo redirecionando fd 2 (stderr) para esse arquivo. Você também precisa forçarpv
a produzir a saída (com-f
), pois normalmente ela só produz saída quando detecta que stderr é um terminal. -
Se você despejar impressões dessa maneira, o arquivo conterá todas impressões, não apenas as últimas.
-
As impressões serão delimitadas pelo caractere "return"
\r
, que instrui o terminal a mover o cursor para o início da linha sem alternar para a próxima linha, portanto a próxima impressão substitui a anterior . O comandotr
transforma "retorna"\r
em "novas linhas" regulares\n
. -
Para ver o conteúdo original de
pv.log
, tentecat -A pv.log
. (cat
exibirá\r
como^M
.) -
O
grep
remove todas as linhas que contêm apenas espaços em branco (espaços ou tabulações), pois podem aparecer depois das últimas impressões. -
O
tail
extrai a última impressão.