我有一个URL列表(包括http://),其中一些只是域名,另一些则包括完整路径。
我如何以编程方式使用shell脚本,提取扩展名(.com,.net ...),同时考虑到某些扩展名为.co.uk?
答案 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"'