Remover linhas do arquivo CSV se a segunda coluna estiver em uma lista de palavras

1

Encontrei uma longa lista de provedores de e-mail gratuitos que desejo remover das minhas listas de e-mail - link

Abaixo estão dois comandos que eu uso atualmente que fazem o mesmo trabalho para um punhado ou entradas de domínio único, no entanto, como posso convertê-los para importar as palavras de outro arquivo? remove.txt por exemplo, em vez de adicionar todos eles manualmente.

ruby -rcsv -i -ne 'row = CSV::parse_line($_); puts $_ unless row[2] =~ /gmail|hotmail|qq.com|yahoo|live.com|comcast.com|icloud.com|aol.co/i' All.txt

sed -i '/^[^,]*,[^,]*hotmail/d' All.txt

Abaixo está uma linha dos dados que usaremos em

"fox*******","scott@sc***h.com","821 Ke****on Rd","Neenah","Wisconsin","54***6","UNITED STATES"
    
por Teddy291 18.07.2015 / 02:46

2 respostas

1

Dois passos:

  1. crie um script removedor (AUX) com print unless m!gmail.com!hotmail.com|...! (o expressio regular é enorme, mas não há problema)
  2. aplique-o a All.txt

Código:

perl -n0E 's/\n/|/g; say "print unless m!\b($_ç)\b!\n" ' remove.txt > AUX
perl -n AUX    All.txt > outfile

Atualização 1:   para não diferenciar maiúsculas de minúsculas, adicione um i no operador de correspondências:

perl -n0E 's/\n/|/g; say "print unless m!@($_=)\b!i\n" ' remove.txt > AUX

Update2    para ter domínios extra de remoção: crie um novo arquivo com o lista de exceções (extra.txt) e:

cat remove.txt extra.txt | 
  perl -n0E 's/\n/|/g; say "print unless m!@($_=)\b!i\n" ' > AUX
perl -n AUX   All.txt > outfile
    
por 18.07.2015 / 12:41
1
{   sed -ne's/./^[^,]*,[^,]*&/p' | 
    grep -vf- ./All.txt 
}   <./remove.txt >./outfile

É o que eu acho que você está perguntando. Não tenho certeza de como isso é relevante para ruby ou para a linha de dados sobre a qual você está falando ...

Se você quiser que as correspondências sejam insensíveis a maiúsculas e minúsculas, basta adicionar a opção -i gnore case a grep like:

{   sed -ne's/./^[^,]*,[^,]*&/p' | 
    grep -ivf- ./All.txt 
}   <./remove.txt >./outfile
    
por 18.07.2015 / 03:06