Perl 域名的grep或sed模式匹配和子域的截断?
我正在尝试使用grep从httrack数据流中提取域名列表。我有它接近工作,但结果也包括任何和所有子域Perl 域名的grep或sed模式匹配和子域的截断?,perl,bash,sed,grep,Perl,Bash,Sed,Grep,我正在尝试使用grep从httrack数据流中提取域名列表。我有它接近工作,但结果也包括任何和所有子域 httrack --skeleton http://www.ilovefreestuff.com -V "cat \$0" | grep -iEo "([0-9,a-z\.-]+)\.(com)" 以下是我当前的示例结果: 域名1.com 域名2.com www.domain3.com subdomain.domain4.com 无论如何,域名5.com 下面是我想要的示例结果 域名1
httrack --skeleton http://www.ilovefreestuff.com -V "cat \$0" | grep -iEo "([0-9,a-z\.-]+)\.(com)"
以下是我当前的示例结果:
- 域名1.com
- 域名2.com
- www.domain3.com
- subdomain.domain4.com
- 无论如何,域名5.com
- 域名1.com
- 域名2.com
- 域名3.com
- 域名4.com
- 域名5.com
Wyatt您可以在
grep
模式中删除
。以下几点应该有效
httrack --skeleton http://www.ilovefreestuff.com -V "cat \$0" |
grep -iEo '[[:alnum:]-]+\.(com|net|org)'
如果您只是想做一个
.com
,那么以下操作将起作用,因为它将删除带有或不带s的HTTP://
以及下一个子域。正如你所看到的,它只适用于a.com
/(?:https?:\/\/[a-z09.]*?)([a-zA-Z0-9-]*\.com)/
示例数据集
http://www.ilovefreestuff.com/
https://test.ilovefreestuff.com/
https://test.sub.ilovefreestuff.com/
也就是说,使用
Regex
解析和/或验证域名通常是不好的做法,因为有大量的变体永远无法完全解释,例外情况是匹配和/或数据集的条件定义明确且不全面。这篇文章有更多关于这个过程的细节,并涵盖了更多的情况 这个代码有效!。。。如何将.net和.org添加到同一个命令行中?很好。非常感谢你。