Funcionalidade uniq com estado

2

Eu tenho um programa que produz grande quantidade de informações redundantes. Gostaria de armazenar somente linhas exclusivas produzidas em stdout , mas não posso fazer isso em várias etapas, como: ./prog > out cat out | sort | uniq > out2

O arquivo

out seria muito grande. Como posso obter uma funcionalidade "uniq com estado", em que stateful_uniq consome linhas e emite apenas as que não foram vistas antes?

    
por user117120 28.05.2015 / 11:33

1 resposta

3

Não ./prog | sort | uniq > out2 faz o que você quer? Ou mesmo ./prog | sort -u > out2 se o seu sort for compatível ...

Para ver linhas únicas conforme elas saem sem classificar a saída, você pode usar uma matriz associativa com awk :

./prog | awk '!(count[$0]++)'

Como apontado por Stéphane Chazelas , sort limita seu uso de memória usando arquivos temporários; a solução awk não, portanto, se o uso da memória for uma preocupação, talvez não seja apropriado.

    
por 28.05.2015 / 11:41

Tags