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

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

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

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 ()