Pular para o conteúdo

Comparar e-mails de dois arquivos e apagar

Responder tópico
  • Denunciar
  • Indicar

1. Comparar e-mails de dois arquivos e apagar

Enviado em 02/08/2010 - 10:43h

Bom dia,
comecei a usar linux a faz pouco tempo e gostaria de uma dica:
Como posso fazer um .sh para comparar dois arquivos e excluir alguns e-mails?

1 - usuarios.txt - lista com todos os e-mails
2 - recusados.txt - lista dos e-mail que não foram enviados.

Eu gostaria de pegar os e-mail que estão em recusados.txt[2] e apaga-los d usuarios.txt [1] usando o Shell
Abraços

Responder tópico

2. Re: Comparar e-mails de dois arquivos e apagar

Enviado em 02/08/2010 - 11:11h

Bom, na verdade, precisaria saber qual é a formatação dos arquivos, mas levando em conta que seja uma lista simples, um email por linha, assim:

$ cat a.txt
zezinho@gmail.com
maria@terra.com.br
linus@linux.com
josedasilva@vivaolinux.com.br

$ cat b.txt
maria@terra.com.br
josedasilva@vivaolinux.com.br

Podemos retirar os email que estão em b.txt de a.txt desta forma:

$ grep -v "$(cat b.txt)" a.txt

Que vai resultar em:
zezinho@gmail.com
linus@linux.com

3. Comparar e-mails de dois arquivos e apagar

Enviado em 02/08/2010 - 12:44h

Antes de qualquer coisa, muito obrigado.

Via shell aparentemente ele remove as linhas, mas qdo abro o arquivo elas ainda estão lá.

4. Re: Comparar e-mails de dois arquivos e apagar

Enviado em 02/08/2010 - 14:57h

"Via shell aparentemente ele remove as linhas, mas qdo abro o arquivo elas ainda estão lá."

Sim, porque o grep manda a resultado do comando para a saída padrão. Você teria que usar uma combinação de comandos para atualizar o arquivo, mais ou menos assim:

$ grep -v "$(cat b.txt)" a.txt > arq-temp.txt && mv arq-temp.txt a.txt

5. Comparar e-mails de dois arquivos e apagar

Enviado em 02/08/2010 - 15:17h

Opa, valeu deu certinho aqui. Muito obrigado.

6. Re: Comparar e-mails de dois arquivos e apagar

Enviado em 02/08/2010 - 16:31h

Ou você pode remover as coisas que aparecem em B de A, usando o comando diff.
=)
Experimente-o.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder