@minnie69

Как удалить повторяющиеся строки с IP более N раз?

Есть документ со строками IP:PORT.
Пример:

xxx.xxx.xxx.xxx/24
xxx.xxx.xxx.xxx/25
xxx.xxx.xxx.xxx/26

Требуется удалить строки, где IP повторяется более N раз, в независимости от Port.

Нашел регулярное выражение Notepad++ как выделить именно ip - ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).
  • Вопрос задан
  • 217 просмотров
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Искать: ^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:[0-9]+\n){666,} - найдёт 666 и больше повторений,
Заменить на: \1 - если нужно оставить первый найденный IP:PORT.
Разумеется включаем режим Regular expression.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
Нашел регулярное выражение Notepad++ как выделить именно ip - ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)


так и выделить
$1 или \1
гугл правила регулярок в нотпаде++
Ответ написан
Комментировать
erge
@erge
Примус починяю
UPDATE:
Через регулярку можно, если предварительно отсортировать строки

В Notepad++ есть следующие операции:

Сортировка:
выбрать в меню
En - Edit -> Line Operations -> Sort Lines Lexicographically Ascending
Ru - Правка -> Операции со Строками -> Сортировка по возрастанию (По первой цифре)

Удаление дубликатов:
выбрать в меню
En - Edit -> Line Operations -> Remove Consecutive Duplicate Lines
Ru - Правка -> Операции со Строками -> Удалить последовательные дубликаты строк


Через регулярку - сначала сортируем список (как описано выше), затем делаем замену через регулярку:
Найти: (\d+\.\d+\.\d+\.\d+:\d+[\r\n]*)(?:\1)+
Заменить на: \1

Это удалит все дубликаты
см. пример на regex101

Если необходимо N-раз, то
Найти: (\d+\.\d+\.\d+\.\d+:\d+[\r\n]*)(?:\1){2,}
Заменить на: \1

где цифра в фигурных скобах = N-1
см. пример на regex101

см. так же Регулярные выражения в Notepad++ готовые примеры, и т.п. в гуглояндексе...

так же удаление дубликатов можно сделать через варианты:
  • в Notepad++сначала сортируем все строки, затем удаляем дубликаты, см. выше пункты меню
  • в bash сделать
    cat ip.lst | sort | uniq

  • использовать MS Excel (LibreOffice и т.п.), см. Yandex - Excel удалить дубликаты

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы