Eu gostaria de fazer algo assim:
> grep pattern file.txt | size -h
16.4 MB
ou algo equivalente a:
> grep pattern file.txt > grepped.txt
> ls -h grepped.txt
16.4 MB
> rm grepped.txt
(isso seria um pouco inconveniente, no entanto)
Isso é possível?
Você pode usar
wc
para isso:contará o número de bytes na saída. Você pode pós-processá-lo para converter valores grandes em um formato “legível por humanos” .
Você também pode usar
pv
para obter essas informações dentro de um pipe:(exibe o número de bytes processados, em formato legível por humanos).
Você pode usar a ferramenta pipeviewer
pv
com o sinalizador de contagem total de bytes-b
:O utilitário Pipe Viewer foi projetado para essa finalidade. Se não for flexível o suficiente para seus propósitos, você pode implementar seu próprio código de medição de transferência de dados FIFO com as chamadas de função da biblioteca de manipulação de pipeline ( libpipeline ), como
pipeline_pump()
epipeline_peek_size()
.Pode-se criar rapidamente sua própria solução em Python:
Funciona assim:
Já que no seu caso particular você está lidando com dados de texto (a julgar pelo fato de que você canaliza de
grep
), você também pode usarbash
'sread
. Algo assim: