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

У меня есть список URL как:

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

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

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

4
задан 10.01.2011, 05:51

3 ответа

Для использования нежадного regexes с grep необходимо будет использовать -P опция и -o выводы опции только часть соответствия. Необходимо будет также использовать lookarounds так, чтобы часть соответствия не была включена в вывод.

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

Пример:

$ echo 'hxxp://subdomain.url3.com/somepage.php' | grep -Po '.*?//\K.*?(?=/)'
subdomain.url3.com
5
ответ дан 07.12.2019, 20:25

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

.*?//(.*)/

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

0
ответ дан 07.12.2019, 20:25

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

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

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

0
ответ дан 07.12.2019, 20:25

Теги

Похожие вопросы