Используя https://regex101.com/, я построил регулярное выражение, которое возвращает первое вхождение IP-адреса в строку.
RegExp:
(?:\d{1,3}\.)+(?:\d{1,3})
RegExp, включая разделители:
/(?:\d{1,3}\.)+(?:\d{1,3})/
Со следующей тестовой строкой:
eu-west 140.243.64.99
Возвращает полное совпадение:
140.243.64.99
Независимо от того, что я пробую с якорями и т.д., следующий скрипт bash не будет работать с сгенерированным регулярным выражением.
temp="eu-west 140.243.64.99 "
regexp="(?:\d{1,3}\.)+(?:\d{1,3})"
if [[ $temp =~ $regexp ]]; then
echo "found a match"
else
echo "No IP address returned"
fi
=~
Оператор обсуждается здесь в руководстве , где это написано Баш использует «расширенные регулярные выражения». Расширенные регулярные выражения описаны на regex(7)
странице руководства и кратко изложены здесь .