用于从域名列表中提取域扩展名的Shell脚本

时间:2011-08-16 19:47:59

标签: bash shell

我有一个URL列表(包括http://),其中一些只是域名,另一些则包括完整路径。

我如何以编程方式使用shell脚本,提取扩展名(.com,.net ...),同时考虑到某些扩展名为.co.uk?

2 个答案:

答案 0 :(得分:2)

最强大的方法是使用库来解析网址。例如,在Python中:

from urlparse import urlparse
domain = urlparse('http://www.mydomain.co.uk/path/to/file.html').netloc
tld = domain.split('.')[-1]
print tld

会打印出净位置(或者我认为你认为这意味着TLD)

更新:这次打印TLD,而不是整个域。

答案 1 :(得分:2)

基本上你需要列出你正在考虑的所有“TLD”。这些数量有限。然后,对于每个URL,您将看到列表中的任何内容是否与该URL匹配,如果匹配,则将其打印出来。您需要自己构建列表的原因是.co.uk不是TLD。 .uk是TLD,.co是子域名。

或者你可以构建一个非常长的正则表达式(例如,提取.co.uk,.com,.ca,.biz):

$ perl -ne 'next unless /^http:\/\/[^ \/?]+(\.com|\.co\.uk|\.ca|\.biz)/; print $1, "\n"'