Condensar saída stdout repetitiva em uma linha

1

Eu tenho uma ferramenta que é chamada a partir de um arquivo em lote que imprime várias linhas de saída repetitiva, como

1 row created.

1 row created.

1 row created.

1 row deleted.

1 row deleted.

Format is unknown, row will omitted.

1 row created.

1 row created.

1 file created.

1 file created.

1 file created.

1 file deleted.

1 file deleted.

Tool has finished successfully.

e assim por diante, exceto que pode haver literalmente milhares de linhas idênticas. Desta forma, a saída na janela do terminal é praticamente inútil. É claro que eu poderia redirecioná-lo e escrever tudo em um arquivo e depois prosseguir com isso, mas gostaria de poder ver rapidamente o que aconteceu e está acontecendo. Existe uma maneira de manipular o fluxo no arquivo em lote que está chamando essa ferramenta para que a saída se pareça com

(3x) 1 row created.

(2x) 1 row deleted.

(1x) Format is unknown, row will omitted.

(2x) 1 row created.

(3x) 1 file created.

(2x) 1 file deleted.

(1x) Tool has finished successfully.

Preferencialmente, o contador na última linha atual seria atualizado (substituindo o valor antigo) e aumentaria sempre que uma linha de saída fosse repetida, de modo que se pudesse ter uma ideia do progresso feito até agora.

Editar: Algumas pesquisas geraram algumas partes que parecem úteis para essa tarefa:

  1. Esta resposta mostra como ler a partir de stdin
  2. Aqui é mostrado como substituir a linha atual no Terminal, para que possamos aumentar o contador
  3. Articel sobre o uso de funções em lote , que parece ser uma boa maneira para manter a parte de edição de fluxo separada das outras partes do arquivo.
por Paul 22.11.2017 / 15:35

0 respostas

Tags