Comparar e-mails de dois arquivos e apagar

1. Comparar e-mails de dois arquivos e apagar

erico
ericoao

(usa GoboLinux)

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


  


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

Francisco Ambrozio
fco

(usa Slackware)

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

erico
ericoao

(usa GoboLinux)

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

Francisco Ambrozio
fco

(usa Slackware)

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

erico
ericoao

(usa GoboLinux)

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

Opa, valeu deu certinho aqui. Muito obrigado.


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

Rafael Umbelino
tlaloc

(usa Gentoo)

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.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts