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 адреса, но и сами строки в которых они содержатся.

5 Replies 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}"
  2. Nope, matches Safari/13606.3.4.1.4 as well 🙁 (06.3.4.1)

  3. For this to work properly, you need to also match at least the end of the string. Otherwise, it will match invalid IP addresses such as «192.168.0.700».

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.