我有一个文件,它的内容是一些网址的列表,
我想从bash中的URL列表中提取域名
例如:
sub1.domain.com
domain3.com
sub5.domain.ext
subof.subdomain.domainx.ex2
我想从此列表中提取域名
我怎么能这样做?
谢谢
答案 0 :(得分:4)
使用Perl的可能解决方案:
use Domain::PublicSuffix qw( );
my $dps = Domain::PublicSuffix->new();
for my $host (qw(
www.google.com
foo.bar.google.com
www.google.co.uk
foo.bar.google.co.uk
)) {
my $root = $dps->get_root_domain($host)
or die $dps->error();
say $root;
}
输出:
google.com
google.com
google.co.uk
google.co.uk
答案 1 :(得分:3)
您可以使用grep
:
grep -Eo '[^.]+\.[^.]+$' file.txt
示例:强>
$ cat file.txt
sub1.domain.com
sub2.domains2.com
domain3.com
sub5.domain.ext
subof.subdomain.domainx.ex2
$ grep -Eo '[^.]+\.[^.]+$' file.txt
domain.com
domains2.com
domain3.com
domain.ext
domainx.ex2
请注意,这将为co.uk
返回www.google.co.uk
。