@Lite_robot

Grep: как исправить регулярку с просмотром вперед?

Есть такая регулярка: " [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(?=\/[0-9]{1,2}) " для получения ип адреса после которого стоит префикс подсети.

При ее использовании " ip route show | grep -E -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(?=\/[0-9]{1,2})" " по какой-то причине ничего не находится, хотя на сайте тестирования регулярок, эта регулярка работает.
Если убрать (?=\/[0-9]{1,2}) то регулярка начинает срабатывать.

Как сделать чтобы сработала регулярка " [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(?=\/[0-9]{1,2}) " ?
  • Вопрос задан
  • 689 просмотров
Решения вопроса 1
Mystray
@Mystray
NOC
Вам нужен не ERE (grep -E) режим, а PCRE (grep -P).
В обычном (даже расширенном) режиме grep не умеет lookarounds и многое другое
www.regular-expressions.info/refadv.html
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
martin74ua
@martin74ua Куратор тега Linux
Linux administrator
[martin@martin ~]$ ip addr show dev lo | grep -E -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(\/[0-9]{1,2})"
127.0.0.1/8


зачем там ?=
Ответ написан
shambler81
@shambler81 Куратор тега Linux
вам нужно чет вроде этого ?
ifconfig | grep inet | grep -v inet6 | grep -v 127.0.0.1 | cut -d: -f2 | awk '{printf $1"\n"}'
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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