Como posso imprimir a saída de pv em uma nova linha conforme ela muda?

1

Eu tenho que copiar um arquivo grande usando pv e como o progresso das saídas pv, eu quero tirar vantagem disso e usá-lo em um arquivo php . No entanto, pv gera progresso na mesma linha (sobrescrevendo o status anterior) e eu preciso gravar cada novo status em uma nova linha, que pode ser lida por php . Como eu posso fazer isso? Eu tentei várias versões do seguinte, mas não funciona:

 pv largefiles > newlargefiles | stdbuf -oL tr '\r' '\n'
    
por nahom 21.09.2015 / 14:23

1 resposta

5

O problema é que o pv não fará nenhuma saída se o stderr não for um terminal, então adicione -f . Você também precisa mover stderr para o pipe:

pv -f largefiles 2>&1 >newlargefiles | stdbuf -oL tr '\r' '\n'

Dependendo do seu uso, talvez você não precise do stdbuf -oL , conforme observado por @kos.

    
por meuh 21.09.2015 / 14:55