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
pvem um arquivo redirecionando fd 2 (stderr) para esse arquivo. Você também precisa forçarpva 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 comandotrtransforma "retorna"\rem "novas linhas" regulares\n. -
Para ver o conteúdo original de
pv.log, tentecat -A pv.log. (catexibirá\rcomo^M.) -
O
grepremove 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
tailextrai a última impressão.