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

7093
hillacma

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

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

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

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

4

3 ответа на вопрос

5
Dennis Williamson

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

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

Пример:

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

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

.*?//(.*)/

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

Это не сработает для `http: // url.com / directory / page.html` Karl Bielefeldt 13 лет назад 0
0
Hydaral

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

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

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

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