varios varias uso regulares patrones palabras palabra expresiones exacta ejemplos egrep buscar avanzado regex linux grep case-insensitive tr

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.