Wie ersetze ich eine Zeichenfolge durch eine Zeichenfolge mit einem Schrägstrich mit sed?


13

Ich suche nach einer Möglichkeit, eine Zeichenfolge in einer Datei durch eine Zeichenfolge mit einem Schrägstrich zu ersetzen, indem sed verwendet wird.

connect="192.168.100.61/foo"
srcText="foo.bar=XPLACEHOLDERX"
echo $srcText | sed "s/XPLACEHOLDERX/$connect"

Das Ergebnis ist:

sed: -e Expression #1, Character 32: Unknown option for `s'

Antworten:


31

Verwenden Sie ein anderes Zeichen als Trennzeichen im sBefehl:

printf '%s\n' "$srcText" | sed "s|XPLACEHOLDERX|$connect|"

Oder die Schrägstriche mit ksh93 Flucht ${var//pattern/replacement}Parametern Expansion Operator (jetzt auch unterstützt zsh, bash, mksh, yashund neueren Versionen von Busybox sh).

printf '%s\n' "$srcText" | sed "s/XPLACEHOLDERX/${connect//\//\\/}/"

+1 für den zweiten Weg. erstmal funktioniert man nicht auf freebsd.
Ibrahim

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.