IP aus String extrahieren

T

twelve

Grünschnabel
[erledigt] IP aus String extrahieren

Hallo,

ich möchte aus einem String eine IP auslesen. Da die IP aus nicht immer von den gleichen Zeichen eingeschlossen wird, habe ich es mit einem regulären Ausdruck versucht.
Leider komme ich aber zu keinem brauchbaren Ergebnis.
Hier sind meine Versuche:

1. Scheint zu funktionieren, außer es kommt eine Ziffer im Teilstring vor der IP vorkommt:
- string="Hallo127.0.0.1Welt"; echo "${string}" | sed -e 's/\([^0-9]*\)\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)\(.*\)/\2/'
-> Ausgabe: 127.0.0.1
- string="12Hallo2k89.31.46.178Welt3"; echo "${string}" | sed -e 's/\([^0-9]*\)\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)\(.*\)/\2/'
-> Ausgabe: 12Hallo289.31.46.178

2. Extrahiert die IP, aber entfernt immer die erste(n) Ziffer(n) der IP:
- string="Hallo127.0.0.1Welt"; expr match "$string" '.*\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)'
- string="Hallo127.0.0.1Welt"; echo "${string}" | sed -e 's/\(.*\)\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)\(.*\)/\2/'
-> Ausgabe: 7.0.0.1
- string="12Hallo2k89.31.46.178Welt3"; expr match "$string" '.*\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)'
- string="12Hallo2k89.31.46.178Welt3"; echo "${string}" | sed -e 's/\(.*\)\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)\(.*\)/\2/'
-> Ausgabe: 9.31.46.178

Woran liegt es, dass der folgende Ausdruck nicht funktioniert (bzw. wie könnte er funktionieren):
- string="12Hallo2k89.31.46.178Welt3"; expr match "$string" '\([0-9]\{1,3\}\(\.[0-9]\)\{3\}\)'

Gruß
Robert

PS: Ich verwende die Bash unter Kubuntu, Debian und Cygwin.
 
Zuletzt bearbeitet:
Code:
grep -Eo '[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}'
dürfte funktionieren
 
Tut's hier auch, zumindest als
Code:
alias sIp='ping -c1 <blahost.tld> | grep -Eo "[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}"'
Somit mal Danke für Frage und Antwort, sowas such ich seit heut früh ;)
 

Ähnliche Themen

Verständnisfrage zu RegExps

ip adresse aus einem string mit sed heraus holen

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

OpenSUSE 12.1: Gnucash startet nicht mehr

Array mit Werte - die Leerzeichen beinhalten - abfüllen

Zurück
Oben