什么是最有效的不区分大小写的 grep 用法?
·
问题:什么是最有效的不区分大小写的 grep 用法?
我的目标是匹配属于 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
解答
grep -i结果比在 grepping 之前转换为 lowers 慢得多,所以我最终使用了 #2 的变体。
感谢@mike-w 提醒我一个简单的测试还有很长的路要走。
更多推荐




所有评论(0)