[
, \
, (
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
...