Removendo linhas duplicadas não-consecutivas

Publicado por Sandro Marcell em 20/10/2009

[ Hits: 16.519 ]

Blog: http://sanmarcell.wordpress.com

 


Removendo linhas duplicadas não-consecutivas



Geralmente utilizo o comando sort para remover linhas duplicadas de um arquivo:

sort -o output -u input

O problema era que em alguns casos as linhas não poderiam ser ordenadas, mas o sort (obviamente!) as ordenava. Então acabei resolvendo o meu problema assim:

perl -ne '$i{"$_"}++ || print' < input > output

O mesmo pode ser obtido via awk:

awk '!i[$0]++' < input > output

Ou:

awk '!($0 in i) {i[$0] ; print}' < input > output

Sendo "input" o arquivo de entrada e "output" o de saída.

Falou! ;)

Outras dicas deste autor

Copiando arquivos e mantendo a estrutura original de diretórios

Substituir espaços em branco por underlines em nome de arquivos

php-meter: Medidor que mostra o consumo de banda no link de internet

Vim: fechamento automático de pares de caracteres

AWK - Validando endereços IPv4

Leitura recomendada

Debian 6.x e CentOS 6.x - Instalando módulo para chipset Realtek RTL8111/8168B

Guia de comandos Linux totalmente em português de A-Z

Convertendo em massa "end-of-line" de arquivos de texto entre Windows, GNU/Linux e Mac OS

Consertando permissões de arquivos e diretórios

Mostrar apenas as linhas não comentadas de um arquivo

  

Comentários
[1] Comentário enviado por ferrarezux em 29/10/2012 - 12:37h

Valeu cara! Me ajudou demais aqui.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts