Usando https://regex101.com/ Construí una expresión regular para devolver la primera aparición de una dirección IP en una cadena.
RegExp:
(?:\d{1,3}\.)+(?:\d{1,3})
RegExp incluyendo delimitadores:
/(?:\d{1,3}\.)+(?:\d{1,3})/
Con la siguiente cadena de prueba:
eu-west 140.243.64.99
Devuelve una coincidencia completa de:
140.243.64.99
No importa lo que intente con los anclajes, etc., el siguiente script bash no funcionará con la expresión regular generada.
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 se trata aquí en el manual donde está escrito bash usa "expresiones regulares extendidas". Las expresiones regulares extendidas se describen en la regex(7)
página del manual y se resumen brevemente aquí .