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

Verwenden von „sed“ zum Suchen und Ersetzen?

Für diese Frage gibt es hier bereits Antworten :Wie kann ich einen String in einer Datei ersetzen?

(9 Antworten)
Vor 6 Jahren geschlossen.

Ich weiß, diese Frage wurde wahrscheinlich schon einmal beantwortet. Ich habe viele Threads dazu an verschiedenen Stellen gesehen, aber die Antworten sind für mich normalerweise schwer zu extrahieren. Ich suche Hilfe bei einer beispielhaften Verwendung des Befehls „sed“.

Angenommen, ich wollte auf die Datei „hello.txt“ (im selben Verzeichnis wie die Eingabeaufforderung) reagieren. Überall dort, wo es den Ausdruck „few“ enthielt, sollte es in „asd“ geändert werden. Wie würde der Befehl aussehen?

Akzeptierte Antwort:

sed ist das s behandeln ed itor, indem Sie | verwenden können (Pipe), um Standardstreams zu senden (STDIN und STDOUT speziell) durch sed und sie programmgesteuert im laufenden Betrieb ändern, was es zu einem praktischen Werkzeug in der Tradition der Unix-Philosophie macht; kann Dateien aber auch direkt mit dem -i bearbeiten unten genannten Parameter.
Beachten Sie Folgendes :

sed -i -e 's/few/asd/g' hello.txt

s/ ist an s gewöhnt Ersetzen Sie den gefundenen Ausdruck few mit asd :

Die Wenigen, die Mutigen.

Der Asd, der Mutige.

/g steht für „global“, was bedeutet, dies für die gesamte Linie zu tun. Wenn Sie /g weglassen (mit s/few/asd/ , es müssen auf jeden Fall immer drei Schrägstriche vorhanden sein) und few erscheint zweimal in derselben Zeile, nur die ersten few wird in asd geändert :

Die wenigen Männer, die wenigen Frauen, die Mutigen.

Die verrückten Männer, die wenigen Frauen, die Mutigen.

Dies ist unter bestimmten Umständen nützlich, z. B. beim Ändern von Sonderzeichen am Anfang von Zeilen (z. B. Ersetzen der Größer-als-Symbole, die einige Leute verwenden, um früheres Material in E-Mail-Threads zu zitieren, durch einen horizontalen Tabulator, während eine zitierte algebraische Ungleichung später in der Zeile bleibt unberührt), aber in Ihrem Beispiel, wo Sie das irgendwo angeben few Falls es ersetzt werden sollte, vergewissern Sie sich, dass Sie /g haben .

Die folgenden zwei Optionen (Flags) werden zu einer kombiniert, -ie :

-i Option wird verwendet, um i zu bearbeiten n Platzieren Sie in der Datei hello.txt .

-e Option gibt das e an auszuführender xpression/Befehl, in diesem Fall s/ .

Hinweis:Es ist wichtig, dass Sie -i -e verwenden suchen/ersetzen. Wenn Sie -ie tun erstellen Sie eine Sicherungskopie jeder Datei mit dem angehängten Buchstaben „e“.

Verwandte:abeles -Bedeutung finden- Dictionary Lookup!
Linux
  1. Beispiele für Bash-String-Manipulationen – Länge, Teilstring, Suchen und Ersetzen

  2. Suchen und kopieren Sie die Datei mit Bash

  3. Suchen und kopieren Sie Dateien

  4. Suchen und durch sed in Verzeichnis und Unterverzeichnissen ersetzen

  5. Ausführbare Dateien mit ls und grep finden

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

So suchen und ersetzen Sie Text, Wort oder Zeichenfolge in einer Datei

So finden und ersetzen Sie Text in Vim

Unix Sed Tutorial:Suchen und Ersetzen von Text in einer Datei mit RegEx

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

Sowohl den Basisnamen als auch den vollständigen Pfad in find -exec verwenden