Za pomocą https://regex101.com/ zbudowałem wyrażenie regularne, aby zwrócić pierwsze wystąpienie adresu IP w ciągu.
RegExp:
(?:\d{1,3}\.)+(?:\d{1,3})
RegExp, w tym ograniczniki:
/(?:\d{1,3}\.)+(?:\d{1,3})/
Z następującym ciągiem testowym:
eu-west 140.243.64.99
Zwraca pełne dopasowanie:
140.243.64.99
Bez względu na to, co spróbuję z kotwicami itp. Poniższy skrypt bash nie będzie działał z wygenerowanym wyrażeniem regularnym.
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
=~
Operator jest omówione tutaj w instrukcji , gdzie jest napisane bash używa „rozszerzonych wyrażeń regularnych”. Rozszerzone wyrażenia regularne są opisane na regex(7)
stronie podręcznika i krótko streszczone tutaj .