Utilizzando https://regex101.com/ ho creato un'espressione regolare per restituire la prima occorrenza di un indirizzo IP in una stringa.
RegExp:
(?:\d{1,3}\.)+(?:\d{1,3})
RegExp compresi i delimitatori:
/(?:\d{1,3}\.)+(?:\d{1,3})/
Con la seguente stringa di test:
eu-west 140.243.64.99
Restituisce una corrispondenza completa di:
140.243.64.99
Indipendentemente da ciò che provo con ancore, ecc., Il seguente script bash non funzionerà con l'espressione regolare generata.
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
=~
operatore è discusso qui nel manuale in cui è scritto bash usa "espressioni regolari estese". Le regex estese sono descritte nella regex(7)
pagina man e brevemente riassunte qui .