Ниже представлены регулярные выражения, которые помогут найти и напечатать все 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 адреса, но и сами строки в которых они содержатся.
hello all,
i am getting multiple same output against same IP addresses.
used command :
thanks!
Nope, matches Safari/13606.3.4.1.4 as well 🙁 (06.3.4.1)
very nice thnk you
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».