Reinterpretar a saída do terminal

1

Eu tenho um programa que executa alguns comandos em um terminal (por exemplo apt-get update ) e armazena a saída.

Como posso reinterpretar a saída para poder remover todas as informações desnecessárias?

Por exemplo, a saída bruta é (isso é apenas uma fração da saída):

Reading package lists... 0%

Reading package lists... 0%

Reading package lists... 1%

Reading package lists... 6%

Reading package lists... 6%

Reading package lists... 26%

Reading package lists... 32%

Reading package lists... 32%

Reading package lists... 39%

Reading package lists... 39%

Reading package lists... 53%

Reading package lists... 65%

Reading package lists... 65%

Reading package lists... 68%

Reading package lists... 68%

Reading package lists... 83%

Reading package lists... 84%

Reading package lists... 84%

Reading package lists... 86%

Reading package lists... 86%

Reading package lists... 88%

Reading package lists... 88%

Reading package lists... 90%

Reading package lists... 90%

Reading package lists... 92%

Reading package lists... 92%

Reading package lists... 93%

Reading package lists... 93%

Reading package lists... 94%

Reading package lists... 94%

Reading package lists... 95%

Reading package lists... 95%

Reading package lists... 96%

Reading package lists... 96%

Reading package lists... 97%

Reading package lists... 97%

Reading package lists... 98%

Reading package lists... 98%

Reading package lists... 99%

Reading package lists... 99%

Reading package lists... 99%

Reading package lists... 99%

Reading package lists... Done

e deve ser interpretado como quando você executa o comando normal no bash, sendo a saída final:

Reading package lists... Done
    
por Tk421 26.04.2015 / 13:23

2 respostas

1

Use col -b (no Linux ele faz parte do pacote util-linux; no sistema base em outro lugar).

col filters out reverse (and half-reverse) line feeds so the output is in the correct order, with only forward and half-forward line feeds.

    
por 20.07.2015 / 22:14
1

Você gravou a saída do comando em um terminal, então decidiu usar os recursos do terminal. Especificamente, apt-get usa caracteres de retorno de carro para mover o cursor de volta para o início da linha atual e sobrescrever o texto que estava na linha.

Para emular o efeito de retornos de carro, remova todo o texto antes de um:

<transcript sed 's/.*\r//'

Se você quiser apenas gravar a saída e não exibi-la para um usuário, use o redirecionamento em vez de script ou algo semelhante. Então, apt-get exibirá texto simples.

    
por 26.04.2015 / 22:04