Usando https://regex101.com/ , construí uma expressão regular para retornar a primeira ocorrência de um endereço IP em uma sequência.
RegExp:
(?:\d{1,3}\.)+(?:\d{1,3})
RegExp incluindo delimitadores:
/(?:\d{1,3}\.)+(?:\d{1,3})/
Com a seguinte cadeia de teste:
eu-west 140.243.64.99
Retorna uma correspondência completa de:
140.243.64.99
Não importa o que eu tente com âncoras, etc., o seguinte script bash não funcionará com a expressão regular gerada.
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
=~
operador é discutido aqui no manual, onde está escrito bash usa "expressões regulares estendidas". Regexes estendidas são descritas na regex(7)
página de manual e resumidas aqui .