Використовуючи 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)
сторінці man і коротко узагальнені тут .