grep [a-z] produzindo 1 caractere

1

Estou tentando encontrar uma string específica com dois caracteres identificáveis. Exemplo disso é

grep -rhIo '[a-zA-z]@[a-zA-z]\.com]

exemplo de arquivo de entrada:

name:phone:[email protected]

que deveria teoricamente produzir:

[email protected]

mas só irá produzir

e@e

de alguma forma, eu preciso indicar que a-z pode ter duração ilimitada e não apenas um caractere

    
por Uni VPS 23.03.2018 / 21:26

1 resposta

1

Eu nem usaria grep no exemplo que você postou, é simples o suficiente para ser manipulado por cut :

$ echo name:phone:[email protected] | rev | cut -d: -f1 | rev
[email protected]

EDITAR :

Mas se você quiser grep , seria algo assim:

$ echo name:phone:[email protected] | grep -oE '[a-zA-Z]+@[a-zA-Z]+\.com'
[email protected]

Observe que + é usado, o que representa one or more instances do caractere anterior em expressões regulares e que -E precisa ser usado com o grep para que isso funcione:

-E, --extended-regexp

      Interpret PATTERN as an extended regular expression (ERE, see below).
      (-E is specified by POSIX.)
    
por 23.03.2018 / 21:35