У меня есть список URL как:
hxxp://url.com/subpage.html
hxxp://www.url2.com/index.php
hxxp://subdomain.url3.com/somepage.php
...
Как я могу использовать grep для соответствия доменным именам только?
Все URL имеют / после домена. И существует много tlds, не уверенных, сколько, список является довольно большим.
Для использования нежадного regexes с grep
необходимо будет использовать -P
опция и -o
выводы опции только часть соответствия. Необходимо будет также использовать lookarounds так, чтобы часть соответствия не была включена в вывод.
grep -Po '.*?//\K.*?(?=/)'
Пример:
$ echo 'hxxp://subdomain.url3.com/somepage.php' | grep -Po '.*?//\K.*?(?=/)'
subdomain.url3.com
Существует великолепное место для тестирования regex навыков здесь. Выражение должно быть похожим
.*?//(.*)/
Необходимо будет циклично выполниться через все результаты. На странице, которую я дал Вам, можно вставить это выражение и веб-адрес, и это затем покажет Вам, что соответствовало. Также помните, что у Вас затем будет полученная переменная только в течение ограниченного времени.