regex - varias - ls grep
¿Cuál es el uso de grep más insensible a mayúsculas y minúsculas? (1)
Mi objetivo es hacer coincidir las direcciones de correo electrónico que pertenecen a Yahoo! familia de dominios. En los sistemas * nix (estaré usando Ubuntu), ¿cuáles son los beneficios y desventajas de alguno de estos métodos para hacer coincidir el patrón?
Y si hay otra solución más elegante que no he sido capaz de imaginar, por favor comparta.
Aquí están:
- Use
grep
con la opción-i
:
grep -Ei "@(yahoo|(y|rocket)mail|geocities)/.com"
- Traduzca los caracteres a mayúsculas o minúsculas y
grep
:
tr [:upper:] [:lower:] < /path/to/file.txt | grep -E "@(yahoo|(y|rocket)mail|geocities)/.com"
- Incluya un conjunto de caracteres para cada personaje en el patrón (el siguiente por supuesto no coincidiría con algo como "@ rOcketmail.com", pero tiene la idea de en qué se convertiría si revisara cada personaje por caso):
grep -E "@([yY]ahoo|([yY]|[rR]ocket)[mM]ail|[gG]eo[cC]ities)/.[cC][oO][mM]" /path/to/file.txt
grep -i
resultó ser significativamente más lento que traducir a lowers antes de grepping, así que terminé usando una variación de # 2.
Gracias @ mike-w por recordarme que una prueba simple es muy útil.