【发布时间】:2016-10-17 09:45:50
【问题描述】:
我想运行一个 grep 命令来搜索文本文件,并且应该将电子邮件地址与某个 tld 匹配。
例如,如果文本文件包含以下行
tom@google.com
mark@google.com
tom.comber@google.cz
我正在搜索.com tld 电子邮件:
它应该匹配 tom@google.com 和 mark@google.com 但不匹配 tom.comber@google.cz
我目前正在使用follow grep 命令,它几乎匹配所有包含.com 的字符串。我希望它专门匹配域的 tld
grep -rnwi "/Users/Me/Desktop/Folder/" -e ".com"
编辑
grep -rnwi '@.+\.com$' "/Users/Me/Desktop/Folder/" 不匹配。但grep -rnwi "/Users/Me/Desktop/Folder/" -e "hotmail.com" 匹配很多。我不想要 hotmail.com 而是所有 .com 电子邮件
EDIT2,这似乎也不匹配。是因为我在一个文件夹中搜索多个文本文件吗?
grep -rnwi '@.\+\.com$' "/Users/Me/Desktop/Folder/"
EDIT3:并不完全清楚。 .tld 扩展后有字符,所以我不得不去掉尾随的 $。这行得通。
【问题讨论】:
-
在模式的末尾添加一个
$(并用反斜杠或字符类转义点。)即:-e "[.]com$" -
@stef,
-w选项正在造成问题..您需要它有什么理由吗?