em regexp perl ( grep -P ... ) você pode usar \Q...\E para proteger meta chars
grep -P "(^|,)\Q$EMAIL\E(,|$)" file.csv
onde:
-
(^|,)= início do campo -
(,|$)= fim do campo
Estou escrevendo um script bash que aceita uma lista de arquivos CSV como argumentos e gera endereços de e-mail encontrados apenas no primeiro arquivo. Para fazer isso, para cada registro no primeiro arquivo CSV, eu procuro o campo de endereço de e-mail e leio seu conteúdo em uma variável shell. Então, eu uso grep -iE com a seguinte expressão regular para procurar o endereço de e-mail encontrado em todos os arquivos restantes, certificando-se de que não é uma subseqüência (por exemplo, [email protected] não é o mesmo que [email protected] ), e permite que seja no início ou no final de um registro:
"^(.*,)?($EMAIL_ADDRESS|\"$EMAIL_ADDRESS\")(,.*)?\$"
Um problema com essa abordagem é que os endereços de e-mail contêm pontos que têm um significado especial em expressões regulares. Minhas perguntas são:
em regexp perl ( grep -P ... ) você pode usar \Q...\E para proteger meta chars
grep -P "(^|,)\Q$EMAIL\E(,|$)" file.csv
onde:
(^|,) = início do campo (,|$) = fim do campo