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

Slash und Backslash in Sed?

Für diese Frage gibt es hier bereits Antworten :Welche Zeichen muss ich maskieren, wenn ich sed in einem sh-Skript verwende?

(4 Antworten)
Vor 5 Jahren geschlossen.

Ich möchte sed verwenden um einen Schrägstrich in einen Backslash und einen Schrägstrich zu ändern, also / -> / . Aber es funktioniert nicht. Hier ein kleines Beispiel:

#!/bin/bash
TEST=/etc/hallo
echo $TEST
echo $TEST | sed "s/hallo/bello/g"
echo $TEST | sed "s///\//g"

Die Ausgabe der ersten drei Zeilen ist wie angenommen. Aber das letzte funktioniert nicht. Wieso den? Wie korrigiere ich den letzten Teil?

Akzeptierte Antwort:

Verwenden Sie einfache Anführungszeichen für den verwendeten Ausdruck:

sed 's///\//g'

In doppelten Anführungszeichen hat eine besondere Bedeutung, also müssen Sie es mit einem Backslash versehen:

sed "s///\\//g"

Aber es ist sauberer, das Trennzeichen zu ändern:

sed 's=/=\/=g'
sed "s=/=\/=g"

Linux
  1. Der Linux-Sed-Befehl:Verwendung und Beispiele

  2. Verwenden von grep und sed zum Suchen und Ersetzen einer Zeichenfolge

  3. Echo sowohl an stdout als auch an stderr

  4. sed mit wörtlicher Zeichenfolge - keine Eingabedatei

  5. sed e- und g-Flags funktionieren nicht zusammen

Bearbeiten von Text mit sed und grep

16 Praktische und nützliche Beispiele für Echo Command unter Linux

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

Suchen und durch sed in Verzeichnis und Unterverzeichnissen ersetzen

Suchen und Ersetzen in Shell-Skripten

Wiederherstellen von stdout und stderr auf die Standardwerte