Se você não precisa que o e-mail esteja em um campo específico do arquivo .csv e só precise imprimir as linhas do arquivo que contêm um dos e-mails de destino, basta usar grep
:
grep -wFf emails.txt file.csv > newfile.csv
Se eles precisam estar em um campo específico, use a solução do @ ChrisDown. Observe, no entanto, que os arquivos csv podem ser bastante complexos. Por exemplo, esta é uma linha csv válida:
field1,"field 2, which can contain commas, is here", field3
Para arquivos mais complexos, você precisará usar um analisador csv para lidar com eles corretamente. Por exemplo, em Perl, você pode usar Text::CSV
:
-
Instale
cpanm
(se você usar o Perl, me agradecerá mais tarde)$ sudo apt-get install cpanminus
Se você não está em um sistema Debian, você deve ser capaz de instalá-lo usando o gerenciador de pacotes da sua distribuição.
-
Instale o módulo
Text::CSV
$ sudo cpanm Text::CSV
-
Analise seu arquivo
$ perl -MText::CSV -le ' BEGIN{ open($f,"emails.txt"); while(<$f>){chomp; $k{$_}++;} } $csv=Text::CSV->new({binary=>1}); while ($row = $csv->getline(STDIN)){ print join",", @$row if defined($k{$row->[2]}) }' < file.csv