-o
imprime somente a parte que corresponde ao padrão, portanto, será necessário estender o padrão para incluir a peça antes do @
. Com os endereços em sua amostra, a captura de quaisquer não-brancos deve ser feita:
$ grep -oniTE '[^[:blank:]][email protected]' foo
1: [email protected]
2: [email protected]
3: [email protected]
Em geral, no entanto, os endereços de e-mail são difíceis de serem analisados (eles podem conter espaços em branco citados), e os itens acima perderão alguns endereços de e-mail válidos (assim como alguns inválidos). Veja por exemplo Wikipedia e os padrões relevantes para os detalhes sangrentos.