4

У меня есть список URL-адресов, таких как:

hxxp://url.com/subpage.html
hxxp://www.url2.com/index.php
hxxp://subdomain.url3.com/somepage.php
...

Как я могу использовать grep для сопоставления только доменных имен?

Все URL имеют / после домена. И есть много tlds, не уверен, сколько, список довольно большой.

3 ответа3

5

Чтобы использовать не жадные регулярные выражения с grep вам нужно использовать опцию -P опция -o выводит только соответствующую часть. Вам также нужно будет использовать обходные пути, чтобы часть совпадения не была включена в вывод.

grep -Po '.*?//\K.*?(?=/)'

Пример:

$ echo 'hxxp://subdomain.url3.com/somepage.php' | grep -Po '.*?//\K.*?(?=/)'
subdomain.url3.com
0

Существует большое место , чтобы проверить свои навыки в регулярных выражениях здесь. Выражение должно выглядеть так

.*?//(.*)/

Вам нужно будет просмотреть все результаты. На странице, которую я вам дал, вы можете поместить это выражение и веб-адрес, и тогда он покажет вам, что соответствует. Также помните, что у вас будет захваченная переменная только в течение ограниченного времени.

0

Если у них есть только один TLD после домена, это должно работать (я предполагаю, что вы хотите исключить поддомен):

[^\./]*\.[^\./]*/

Он все еще имеет косую черту, но вы можете просто передать это через sed .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .