Ich versuche, eine IP-Adresse aus einem Text zu extrahieren, und verstehe nicht das Ergebnis entsprechend der Regex, die ich schreibe. Apparantly dies:Sed-Ausdruck für IP-Adresse, erhalten unerwartetes Ergebnis für übereinstimmende Gruppe
echo '"IPAddress": "173.14.0.3",' | sed -n -r -e 's/"IPAddress": "(.*)"/\1/p'
kehrt
173.14.0.3,
Warum erhalte ich die ,
am Ende? Gibt "(.*)"
den Regex nicht an, um eine übereinstimmende Gruppe von allem zwischen den letzten zwei "
zu erstellen?
Ursprünglich begann ich mit
ausecho '"IPAddress": "173.14.0.3",' | sed -n -r -e 's/"IPAddress": "([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})"/\1/p'
, bekam aber gleiches Ergebnis. Ich habe regex101 verwendet, und da bekomme ich eine andere Antwort. Warum?
regex101 unterstützt die regulären Ausdrücke von sed nicht. Sie können es nicht für sed verwenden. – hek2mgl
Ist die Eingabe ein JSON-Dokument? – hek2mgl
@ hek2mgl Ja, aber ich interessiere mich mehr dafür, wie sed funktioniert. Ich weiß, es gibt bessere Möglichkeiten, Json zu parsen. – erihanse