En utilisant https://regex101.com/, j'ai construit une expression régulière pour renvoyer la première occurrence d'une adresse IP dans une chaîne.
RegExp:
(?:\d{1,3}\.)+(?:\d{1,3})
RegExp, y compris les délimiteurs:
/(?:\d{1,3}\.)+(?:\d{1,3})/
Avec la chaîne de test suivante:
eu-west 140.243.64.99
Il renvoie une correspondance complète de:
140.243.64.99
Peu importe ce que j'essaie avec des ancres, etc., le script bash suivant ne fonctionnera pas avec l'expression régulière générée.
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
=~
opérateur est décrit ici dans le manuel où il est écrit bash utilise des "expressions régulières étendues". Les expressions rationnelles étendues sont décrites dans la regex(7)
page de manuel et brièvement résumées ici .