如何使用grep来匹配域名?

hil*_*cma 4 linux grep regex parsing string

我有一个网址列表,如:

hxxp://url.com/subpage.html
hxxp://www.url2.com/index.php
hxxp://subdomain.url3.com/somepage.php
...
Run Code Online (Sandbox Code Playgroud)

如何使用 grep 仅匹配域名?

所有网址在域后都有一个 / 。并且有很多 tld,不知道有多少,列表相当大。

Den*_*son 5

为了使用非贪婪的正则表达式,grep您需要使用该-P选项并且该-o选项仅输出匹配的部分。您还需要使用环视,以便匹配的部分不包含在输出中。

grep -Po '.*?//\K.*?(?=/)'
Run Code Online (Sandbox Code Playgroud)

例子:

$ echo 'hxxp://subdomain.url3.com/somepage.php' | grep -Po '.*?//\K.*?(?=/)'
subdomain.url3.com
Run Code Online (Sandbox Code Playgroud)