очистка списка доменов / удаление поддоменов - PullRequest
0 голосов
/ 17 июня 2019

У меня большой список доменов, который смешан с поддоменами.

google.de
spiegel.de
sub1.google.de
zeit.de
sub1.spiegel.de

Есть ли в редакторе инструмент или обходной путь (например, Sublime или Notepad ++), чтобы получить все до удаления domain.tld?

Notepad ++ помог мне очистить этот список от всего другого содержимого, которое было внутри. Но на этом остановился.

Ответы [ 3 ]

1 голос
/ 17 июня 2019
  • Ctrl + H
  • Найти что: ^(?:.+\.)?([^.\r\n]+\.[^.\r\n]+)$
  • Заменить на: $1
  • check Wrap вокруг
  • check Регулярное выражение
  • UNCHECK . matches newline
  • Заменить все

Пояснение:

^                   # beginning of line
  (?:               # start non capture group
    .+              # 1 or more any character but newline
    \.              # a dot
  )?                # end group, optional
  (                 # start group 1
    [^.\r\n]+       # 1 or more non dot, non linebreak
    \.              # a dot
    [^.\r\n]+       # 1 or more non dot, non linebreak
  )                 # end group
$                   # end of line

Результат для данного примера:

google.de
spiegel.de
google.de
zeit.de
spiegel.de

Снимок экрана:

enter image description here

1 голос
/ 17 июня 2019

Если вы хотите удалить ***. Кое-что, найдите регулярное выражение

^.*\..*\..*

и замените его ничем.

РЕДАКТИРОВАТЬ: версия 2, где вы хотите сохранитьчасть строки (дубликат в вашем примере):

^.*\.(.*\..*)

заменено на

$1

() и.взять их значение регулярного выражения (группировка и любой символ), а \.избегаетнайти этого персонажа.$ 1 получает то, что находится внутри (первого) набора (), если поисковое выражение (как $ 2 получит вторую часть, если присутствует ...)

0 голосов
/ 17 июня 2019

Если у вас есть awk инструмент командной строки.

awk 'BEGIN{FS="."} NF==3{$0=substr($0, length($1)+2)}1' input.txt

Входной файл input.txt:

google.de
spiegel.de
sub1.google.de
zeit.de
sub1.spiegel.de

Выход:

google.de
spiegel.de
google.de
zeit.de
spiegel.de

Надеюсь, это то, что вы хотели.

Сценарий объяснения:

BEGIN{FS="."}    # set input line field separator to  .
NF==3{$0 = substr($0, length($1)+2)} # if input line has 3 fields, Remove the first field
1                # output modified line

Для более общего случая, когда существует более 3 квалификаторов домена.

BEGIN{FS=OFS="."}    # set input line field separator to  .
NF > 2{                # if there are more than 2 input fields
        while(NF > 2) $0 =substr($0, length($1)+2); #remove the first field from input line
    }              
1                # output modified line
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...