RegEx: Найти IP Адреса в Файле с Помощью Grep

Ниже представлены регулярные выражения, которые помогут найти и напечатать все IP адреса из файла.

Данные регулярные выражения соответствуют шаблонам IPv4 адресов.

IP адреса, соответствующие регулярным выражения, могут быть извлечены из файла с помощью команды grep.

В данной заметке Вы найдете как сами регулярные выражения, так и примеры того, как найти и извлечь все IP адреса из файла с помощью команды grep.

Регулярное Выражение для Поиска IP Адресов

Паттерн для поиска IPv4 адресов (этот паттерн соответствует всем значениям от 0.0.0.0 to 999.999.999.999 и в большинстве случаев этого бывает достаточно).

"([0-9]{1,3}[\.]){3}[0-9]{1,3}"

Найти Все IP Адреса с Помощью Grep

Пропарсим файл и найдем в нем все IP адреса из диапазона от 0.0.0.0 до 999.999.999.999 с помощью grep:

$ grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" file.txt

Это довольно простое регулярное выражения, но Вы должны понимать что далеко не все его значения являются правильными IP адресами с технической точки зрения.

Далее мы рассмотрим паттерн, под который попадают исключительно правильные IP адреса.

Поиск Правильных IPv4 Адресов

Регулярное выражение для поиска и проверки правильных IPv4 адресов:

"(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"

Извелечь Только Валидные IP Адреса

Находим только правильные IP адреса с помощью grep:

$ grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" file.txt
Опция Описание
-E, —extended-regexp Использовать расширенное регулярное выражение
-o, —only-matching Печать только IP адресов

Пропускайте опцию -o, если Вы хотите вывести не только IP адреса, но и сами строки в которых они содержатся.

One Reply to “RegEx: Найти IP Адреса в Файле с Помощью Grep”

  1. hello all,
    i am getting multiple same output against same IP addresses.
    used command :

    grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}"

Добавить комментарий