Как насчет этого:
(^|[^\.0-9])([0-2]?[0-9]{,2}\.){3}[0-2]?[0-9]{,2}($|[^\.0-9])
Запустить с -e
«расширенным» grep. Он не будет совпадать ни с одним числом с более чем четырьмя повторяющимися группами или с числом, превышающим 299 (лучше всего исключать больше, чем 255).
Очевидно, это работает только для адресов IPv4 ...
EDIT:
Опираясь на ответ на этот вопрос , вот версия, которая соответствует только действительным адресам IPv4 (я изменил ее, чтобы она не соответствовала числам с более чем четырьмя группами):
(^|[^\.0-9])(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])($|[^\.0-9])