Подтвердить что ты не робот

Какое наиболее эффективное использование grep без учета регистра?

Моя цель - сопоставить адреса электронной почты, принадлежащие Yahoo! семейство доменов. В системах * nix (я буду использовать Ubuntu), каковы преимущества и недостатки любого из этих методов для сопоставления шаблона?

И если есть еще одно, более элегантное решение, которое я не мог вообразить, пожалуйста, поделитесь.

Вот они:

  • Используйте grep с опцией -i:

grep -Ei "@(yahoo|(y|rocket)mail|geocities)\.com"

  • Переведите символы ко всему верхнему регистру или нижнему регистру, затем grep:

tr [:upper:] [:lower:] < /path/to/file.txt | grep -E "@(yahoo|(y|rocket)mail|geocities)\.com"

  • Включить набор символов для каждого символа в шаблоне (ниже будет, конечно, не соответствовать что-то вроде "@rOcketmail.com", но вы получите представление о том, каким он станет, если бы я проверил каждый символ для случая):

grep -E "@([yY]ahoo|([yY]|[rR]ocket)[mM]ail|[gG]eo[cC]ities)\.[cC][oO][mM]" /path/to/file.txt

4b9b3361

Ответ 1

grep -i оказался значительно медленнее, чем перевод на понижение до grepping, поэтому в итоге я использовал вариант # 2.

Спасибо @mike-w за то, что напомнили мне, что простой тест проходит долгий путь.