LINUX.ORG.RU

Парсинг имен доменов(и сабдоменов) из txt файла regex BASH

 , ,


0

1

Пожалуйста помогите - как выбрать из текстового файла(file.txt) все домены. Как первого так и N-уровня Собрал вот такую строку:

grep -oP  "(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]" file.txt > domains.txt

Но есть домены, в которых используется нижнее подчеркивание «_» , и такие домены не попадают в выборку. Такие, например:

mail.mta-sts.mail.mail._mta-sts.mail.mail.mail.mail.mail.mail.humberside.bid

и их обрезает вот до такого состояния:

mta-sts.mail.mail.mail.mail.mail.mail.humberside.bid

Как изменить регулярку так, чтобы парсилось целиком домен с поддоменами, даже содержащими «_» ?



Последнее исправление: alexross (всего исправлений: 2)

Статус: анонимный

Дата регистрации: 28.08.20 21:03:01

В Job.

anonymous
()
Ответ на: комментарий от anonymous

Там специально для таких как ты пометка:

You can't regex that.

anonymous
()

Вот так получилось, не знаю правильно или нет, но сработало как надо)

grep -oP  "(?:[a-z0-9_](?:[a-z0-9-]{0,61}[a-z0-9_])?\.)+[a-z0-9_][a-z0-9-]{0,61}[a-z0-9_]" file.txt > domains.txt

и честно говоря, публикуя вопрос думал что получу ответ а не ссылки на мануалы)) Все равно - спасибо за участие!!!

alexross
() автор топика
Ответ на: комментарий от alexross

Ну, тут типа, не ответы.маил.сру. Здесь, в основном, помогают тем, кто сам прилагает усилия к решению проблемы.

ashot ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.