2016-04-08 13 views
2

Ich schreibe eine nette Regex, um einige IPs in einer Textdatei zu ersetzen.sed: unterminated 's' Befehl '

sed -r "s/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/${APP_IP}/g" /path/to/my/file 

Allerdings wird es geben: sed: -e expression #1, char 49: unterminated 's' command

Ich brauche die doppelten Anführungszeichen sonst Strings mit den wörtlichen Variablennamen gewünscht ersetzt: $ {APP_IP}

Was bin ich?

+1

Kann Ihr Problem nicht reproduzieren - was ist der Wert von 'APP_IP'? –

+3

Das Problem wird wahrscheinlich ein '/', eine neue Zeile oder ein anderes abschließendes Zeichen sein, das in '$ APP_IP' vorhanden ist. –

+0

Ihr Code funktioniert gut für mich :) – Joda

Antwort

0

Gelöst: Scheint zu arbeiten, wenn ich die Variable $ APP_IP manuell auf die IP im Test einstellen. Wenn ich die Variable aus der Ausgabe (eines Ping) erfasse, wird der Fehler angezeigt. Muss Sonderzeichen in der Variablen sein. Danke Leute.

+0

Enthält die Ausgabe eine Zeilenschaltung? –

+1

Ja, ich nahm es mit APP_IP = $ (echo $ APP_IP | tr -d '\ n') und es funktionierte :) – arush436

+0

Sie können einfach APP_IP = $ (echo -n "$ APP_IP") – edi9999