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

Verwenden Sie Sed, um eine Zeichenfolge durch eine Zeichenfolge zu ersetzen, die einen Verzeichnisnamen enthält (z. B. einen Schrägstrich „/“)?

Ich weiß, dass diese Frage schon einmal gestellt wurde, aber ich habe Probleme, die Antworten zu verstehen, die ich gefunden habe. Grundsätzlich möchte ich

verwenden
sed -i 's/string//some/directory/g' file.txt

und ich kann keine klare Antwort darauf finden, wie man /some/directory den sed nicht auflösen Syntax.

Akzeptierte Antwort:

sed erlaubt mehrere Syntaxtrennzeichen, / nur die am häufigsten verwendete.

Genauso gut kann man sagen

sed -i 's,<string>,<some/directory>,g' file.txt

wo der , hat jetzt die Funktion, die normalerweise von / ausgeführt wird , wodurch letztere von ihrer besonderen Bedeutung befreit wird.

Beachten Sie jedoch (wie von @Jeff Schaller hervorgehoben), dass jetzt die , darf nicht im Datei- oder Verzeichnisnamen vorkommen – und es ist ein gültiges Zeichen für Dateinamen! Diese Antwort gibt einen guten Überblick über die Vorgehensweise bei der Anwendung von sed zu einem String mit Sonderzeichen.


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

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

  3. Suchen und durch sed in Verzeichnis und Unterverzeichnissen ersetzen

  4. Ersetzen Sie in Bash ein Wort durch ein anderes

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

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

Top 20 der zu verwendenden sed-Befehle

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

Wie kann man Zeichen rekursiv durch sed ersetzen?

Ersetzen Sie Zeilen in einer Datei durch Zeilen in einer anderen durch die Zeilennummer