script bash: cómo usar una variable $ en grep

script bash: cómo usar una variable $ en grep

Estoy escribiendo un script bash simple donde el usuario ingresa el nombre de dominio (ejemplo.com) y obtiene la dirección de correo electrónico de la salida del comando whois.

Solo quiero recuperar el correo electrónico con el mismo dominio de entrada ([correo electrónico protegido]).

El siguiente comando funciona si escribo el dominio ( example.com) pero no funciona con $domain. No sé cómo utilizar la $domainvariable dentro de la función grep. Cualquier ayuda es muy apreciada, gracias.

whois $dominio | grep -m1 -EiEio '\b[A-Z0-9._%+-]+@[$dominio]+\.[AZ]{2,4}\b'

Respuesta1

Las variables no se expanden entre comillas simples. En este caso, probablemente sería suficiente simplemente cambiar a comillas dobles. Además, retire el [y ]alrededor $domain. Con los corchetes, crearía una expresión de corchetes que coincidiría con cualquier carácter del nombre de dominio (pero no con el nombre de dominio real).

Al final terminarías con algo como

whois "$domain" |
grep -m1 -Eio "\b[[:alnum:]._%+-]+@$domain\b"

Eliminé el \.[A-Z]{2,4}bit al final de su expresión porque en realidad no le vi ningún uso, y usé un nombre simbólico para hacer coincidir el alfanumérico antes del @signo.

Una mejora adicional sería reemplazar cualquier punto $domainantes \.de usarlo en el patrón:

whois "$domain" |
grep -m1 -Eio "\b[[:alnum:]._%+-]+@${domain//./\\.}\b"

Esto requiere basho cualquier otro shell que comprenda la sustitución de parámetros no estándar ${variable//pattern/word}.

información relacionada