grep regex查找某个tld

时间:2016-10-17 09:45:51

标签: regex grep

我想运行一个grep命令来搜索文本文件,并且应该将电子邮件地址与某个tld匹配。

示例,如果文本文件包含以下行

tom@google.com
mark@google.com
tom.comber@google.cz

我正在搜索.com tld电子邮件:

它应与tom@google.commark@google.com匹配,但不能与tom.comber@google.cz

匹配

我目前正在使用follow grep命令,它几乎匹配包含.com的每个字符串。我希望它特别匹配域的域名

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/"
编辑3:不是很清楚。 .tld扩展名后面有字符,所以我不得不留下尾随$。这很有效。

1 个答案:

答案 0 :(得分:2)

执行:

grep '@.\+\.com$' file.txt
  • @.\+匹配@后跟一个或多个字符
  • \.com$最后匹配文字.com

对其他TLD执行相同操作,最后将com替换为该TLD。