从Shell中的文件中提取域名

时间:2016-05-30 13:36:25

标签: regex bash shell grep extract

我有一个文件,它的内容是一些网址的列表,
我想从bash中的URL列表中提取域名 例如:

sub1.domain.com
domain3.com
sub5.domain.ext
subof.subdomain.domainx.ex2

我想从此列表中提取域名 我怎么能这样做?
谢谢

2 个答案:

答案 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