使用Shell/Python/Perl从URL提取主域 我知道这个问题似乎已经被问及了,但是有更复杂的情况需要考虑。

使用Shell/Python/Perl从URL提取主域 我知道这个问题似乎已经被问及了,但是有更复杂的情况需要考虑。,python,perl,shell,url,Python,Perl,Shell,Url,我在这里列出了一些情况: http://news.yahoo.com/test->yahoo.com http://www.yahoo.com/test->yahoo.com http://sports.sina.com.cn/test->sina.com.cn http://news.yahoo.co.jp/test->yahoo.co.jp http://subdomain.evisu.jp/test->evisu.jp http://cs.stanford.edu/test->stanfo

我在这里列出了一些情况:

http://news.yahoo.com/test->yahoo.com

http://www.yahoo.com/test->yahoo.com

http://sports.sina.com.cn/test->sina.com.cn

http://news.yahoo.co.jp/test->yahoo.co.jp

http://subdomain.evisu.jp/test->evisu.jp

http://cs.stanford.edu/test->stanford.edu

http://eecs.清华.edu.cn/test->清华.edu.cn

http://math.u-tokyo.ac.jp/test->u-tokyo.ac.jp

事实上还有更复杂的情况,但我们不要讨论下面的情况

http://www.jx.cn/test->jx.cn

http://www.ecjtu.jx.cn/test->ecjtu.jx.cn

您可以使用cpan上的模块解析这些字符串并提取主机名:

use URI;
while(<>) {
    my $uri = URI->new($_);
    my $host = $uri->host;
}
试试echo“http://news.yahoo.com/test”| cut-f2--d“| cut-f1-d”/”
my @parts = split /\./, $host;
unshift @parts if @parts > 2;
my $newHost = join ".", @parts;