Trabajan. Posiblemente no hacen lo que quieres hacer, pero funcionan.
$ grep --v
grep (BSD grep) 2.5.1-FreeBSD
Las siguientes pruebas se realizaron en una Mac, utilizando la versión anterior de grep.
$ grep -rIhEo "\b[a-zA-Z0-9.-] [email protected] [a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b"
grep: warning: recursive search of stdin
[email protected]
[email protected]
words which match [email protected] will be printed
[email protected]
but no others.
$
- Mi coeficiente intelectual es 169. ¿Soy inteligente?
- Estoy nervioso por ir a mi primer concierto. ¿Alguien puede compartir conmigo cómo fue tu primera vez en un concierto?
- ¿Por qué muestro un comportamiento extremo? O estoy intensamente dedicado o no me importa. ¿Es normal?
- Soy la madre de un niño pequeño, y a veces tengo mucha energía y puedo hacer mucho trabajo, pero otras veces, como hoy, siento que todo lo que necesito hacer es 100 veces más difícil de lo habitual. ¿Algún consejo para aumentar mi productividad?
- ¿Voy en la dirección correcta para convertirme en fotógrafo profesional?
… el primero funciona bien.
$ grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*'
[email protected] _
[email protected] _
adsf
[email protected]
[email protected]
$
… el segundo también funciona bien.
$ grep -E -o "\b[A-Za-z0-9._%+-] [email protected] [A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b"
no matching here
maybe this does match [email protected] however
[email protected]
and not this line
$
… y el tercero también funciona muy bien.
Por último…
$ grep -E -o "\b[a-zA-Z0-9.-] [email protected] [a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b"
here is another test
probably this will match [email protected] just fine
[email protected]
and it does.
and not these lines.
$
… ese también funciona muy bien.
Ahora … a partir de su comentario, parece que no está preguntando si estas expresiones regulares funcionan, está preguntando qué usar para reconocer los correos electrónicos. Aquí hay una respuesta para eso: la respuesta de Claus Faerber a ¿Cuál es la forma más correcta de validar una dirección de correo electrónico?
Su expresión regular:
^ ([-! # $% & ‘* + / =? ^ _ `{|} ~ A-Za-z0-9] + (\. [-! # $% &’ * + / =? ^ _` {|} ~ A-Za-z0-9] +) * | “([\ x20 \ x21 \ x23- \ x5B \ x5D- \ x7E] | \\ [\ x20- \ x7E]) *”) @ ( ([A-Za-z0-9] ([- A-Za-z0-9] * [A-Za-z0-9])?) (\. [A-Za-z0-9] ([- A -Za-z0-9] * [A-Za-z0-9])?) +) $
Si reemplaza el ^ al principio y el $ al final con \ b, probablemente sirva para sus propósitos; es posible que deba proteger algunos de ellos según el idioma que esté utilizando (¿bash?).