Mit https://regex101.com/ habe ich einen regulären Ausdruck erstellt, um das erste Auftreten einer IP-Adresse in einer Zeichenfolge zurückzugeben.
RegExp:
(?:\d{1,3}\.)+(?:\d{1,3})
RegExp einschließlich Trennzeichen:
/(?:\d{1,3}\.)+(?:\d{1,3})/
Mit der folgenden Testzeichenfolge:
eu-west 140.243.64.99
Es wird eine vollständige Übereinstimmung zurückgegeben von:
140.243.64.99
Egal, was ich mit Ankern usw. versuche, das folgende Bash-Skript funktioniert nicht mit dem generierten regulären Ausdruck.
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 wird hier im Handbuch erläutert , wo die geschriebene Bash "erweiterte reguläre Ausdrücke" verwendet. Erweiterte reguläre Ausdrücke sind in der beschriebenen regex(7)
Manpage und kurz zusammengefasst hier .