[ , \ , ( e ) todos têm significados especiais para o shell e devem ser citados se você pretende passá-los textualmente em um argumento para um comando (aqui grep ). / p>
Observe também que intervalos como [a-z] fazem pouco sentido fora da localidade C.
Então, você provavelmente vai querer:
LC_ALL=C grep -xE '[[:alnum:]]+\.[[:alnum:]]+@(E|e)nron\.com' < some-file
Ou:
LC_ALL=C grep -xE '[[:alnum:]]+\.[[:alnum:]]+@[Ee]nron\.com' < some-file
Para relatar as linhas que correspondem a E xtended expressão regular e x atly. Com os caracteres al pha num eric limitados aos C locale (assim no Cygwin, letras ASCII em inglês / latim sem diacríticos e algarismos decimais arábicos; no idioma C [[:alnum:]] e [a-zA-Z0-9] correspondem aos caracteres mesma coisa).
Acima, usando o formulário '...' de cotação que é o mais strong (nenhum caractere é especial dentro deles).
+ , | , (...) é estendido operador regexp (não básico operadores regexp como esperado por grep sem -E ). Sem -x , grep procuraria correspondências dentro das linhas, por exemplo, corresponderia em uma linha como:
[email protected] [email protected] whatever
^^^^^^^^^^^^^
Sem LC_ALL=C , [[:alnum:]] poderia corresponder a caracteres de outros scripts alphetical (como os gregos, cirílicos, coreanos) e [a-z] poderia corresponder em alguns caracteres latinos com diacríticos como á , ç , ÿ , mas não outros como ẑ , ź como são após z ...