GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie ersetze ich eine Zeichenfolge durch eine Zeichenfolge, die Slash mit Sed enthält?

Ich suche nach einer Möglichkeit, eine Zeichenfolge in einer Datei durch eine Zeichenfolge zu ersetzen, die einen Schrägstrich enthält, indem ich sed verwende.

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'

Akzeptierte Antwort:

Verwenden Sie in den s ein anderes Zeichen als Trennzeichen Befehl:

printf '%sn' "$srcText" | sed "s|XPLACEHOLDERX|$connect|"

Oder maskieren Sie die Schrägstriche mit ${var//pattern/replacement} von ksh93 Parametererweiterungsoperator (wird jetzt auch von zsh unterstützt , bash , mksh , yash und neuere Versionen von busybox sh ).

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

Linux
  1. Ersetzen Sie in Bash ein Wort durch ein anderes

  2. Alle Dateien finden, deren Name eine Zeichenfolge enthält

  3. tr Befehl - wie man die Zeichenfolge \n durch einen tatsächlichen Zeilenumbruch (\n) ersetzt

  4. Wie ersetze ich einfache Anführungszeichen durch ein anderes Zeichen in sed?

  5. Verwenden von sed zum Teilen einer Zeichenfolge mit einem Trennzeichen

Ersetzen Sie intelligente Anführungszeichen durch den Linux-Befehl sed

So verwenden Sie sed zum Suchen und Ersetzen von Zeichenfolgen in Dateien

So verwenden Sie den SED-Befehl zum Suchen und Ersetzen von Zeichenfolgen in Dateien

So verwenden Sie Sed zum Suchen und Ersetzen einer Zeichenfolge in einer Datei

So ersetzen Sie eine Zeichenfolge in mehreren Dateien in der Linux-Befehlszeile

Wie kann man Zeichen rekursiv durch sed ersetzen?