Quelle est l'utilisation grep insensible à la casse la plus efficace?
Mon objectif est de faire correspondre les adresses e-mail qui appartiennent à Yahoo! la famille de domaines. Dans les systèmes * nix (je vais utiliser Ubuntu), quels sont les avantages et les inconvénients de l'une de ces méthodes pour faire correspondre le modèle?
Et s'il y a une autre solution plus élégante que je n'ai pas été capable d'imaginer, veuillez la partager.
Les voici:
- Utiliser
grep
avec l'option-i
:
grep -Ei "@(yahoo|(y|rocket)mail|geocities).com"
- traduire les caractères en majuscules ou en minuscules alors
grep
:
tr [:upper:] [:lower:] < /path/to/file.txt | grep -E "@(yahoo|(y|rocket)mail|geocities).com"
- inclure un jeu de caractères pour chaque caractère dans le modèle (le ci-dessous ne correspondrait bien sûr pas à quelque chose comme "@rOcketmail.com", mais vous avez l'idée de ce que cela deviendrait si je vérifiais chaque caractère pour le cas):
grep -E "@([yY]ahoo|([yY]|[rR]ocket)[mM]ail|[gG]eo[cC]ities).[cC][oO][mM]" /path/to/file.txt
1 réponses
grep -i
s'est avéré être significativement plus lent que de traduire en plus bas avant grepping, donc j'ai fini par utiliser une variation de #2.
Merci @mike-w pour me rappeler qu'un simple test va un long chemin.