我的目标是匹配属于Yahoo!域名家族的电子邮件地址。在*nix系统中(我将使用Ubuntu),对于这些匹配模式的任何一种方法,有哪些优点和缺点?
如果还有另一种更优雅的解决方案,我没有想象到,请分享。
它们在这里:
- 使用带有选项
-i
的grep
:
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
(?:)
。 - CAustin