você está aqui: Home  → Arquivo de Mensagens

Extrair diferença entre duas listas numéricas com GNU grep

Colaboração: Mário Jorge Limeira dos Santos

Data de Publicação: 17 de agosto de 2016

Recentemente necessitei descobrir quais itens estavam presentes em um arquivo texto com uma lista de números e não estavam presentes em uma segunda lista do mesmo tipo. Para uma lista pequena, é simples realizar a tarefa manualmente, mas para uma lista com milhares de linhas torna-se uma tarefa cansativa. Para solucionar o problema foi utilizado o comando grep. O procedimento foi feito no sistema operacional GNU-Linux mint, mas deve funcionar em qualquer outra distro GNU-Linux.

No meu exemplo, utilizei arquivos texto do tipo .csv (Comma separated values), mas a dica deve servir em qualquer arquivo texto, desde que a lista possua apenas um item por linha.

Chamei a primeira lista de lista1.csv e a segunda lista de lista2.csv. O que queremos descobrir é quais itens estão presentes na lista2 e não estão presentes na lista1. Para tanto, no terminal (shell) faça:

  $ grep -vf lista1.csv lista2.csv

O resultado do comando será enviado para a saída padrão (tela). Caso sejam muitas linhas e deseje saber quantas linhas são, basta redirecionar a saída para o comando wc, dessa forma:

  $ grep -vf lista1.csv lista2.csv | wc -l

Para guardar o resultado do comando em um arquivo para uso posterior:

  $ grep -vf lista1.csv lista2.csv > resultado.csv

Para saber mais sobre o comando grep e a função de cada opção utilizada, consulte o manual do comando:

  $ man grep

Muitas outras dicas e usos do GNU grep podem ser encontrados aqui mesmo no dicas-l.

Mário Jorge é Analista de Tecnologia da Informação do IFCE. https://diasporabr.com.br/i/651382b44715 "Software should be free".


Veja a relação completa dos artigos de Mário Jorge Limeira dos Santos