Verwenden von ' sed ' zum Suchen und Ersetzen von [Duplikat]

Diese Frage hat hier bereits Antworten :

Kommentare

  • tldp.org/LDP/abs/html/x23170.html
  • grymoire.com/Unix/Sed.html
  • Dies sollte nicht als Duplikat markiert werden, da die andere Antwort, auf die verwiesen wird, nicht ' zeigt Ihnen nicht, wie Sie eine einzelne Datei ersetzen können, während diese Antwort dies tut. Entweder das oder integrieren Sie diese Antwort in diese

Antwort

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

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

s/ wird verwendet, um s den gefundenen Ausdruck few mit zu ersetzen asd:

Die wenigen, die tapferen.


Die asd , der Tapfere.

/g steht für „global“, was bedeutet, dies für die gesamte Zeile zu tun. Wenn Sie die /g (mit s/few/asd/) und erscheint zweimal in derselben Zeile, nur die erste few wird in asd geändert:

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


Die Asd-Männer, die wenigen Frauen, die Tapferen.

Dies ist unter bestimmten Umständen hilfreich, z. B. beim Ändern von Sonderzeichen am Zeilenanfang (z. B. Ersetzen der Symbole, die größer sind als die Symbole, mit denen manche Benutzer vorheriges Material in E-Mail-Threads zitieren mit einer horizontalen Registerkarte, während eine zitierte algebraische Ungleichung später in der Zeile unberührt bleibt), aber in Ihrem Beispiel, in dem Sie angeben, dass überall few auftritt, sollte sie ersetzt werden Stellen Sie sicher, dass Sie /g haben.

Die folgenden zwei Optionen (Flags) werden zu einer zusammengefasst: :

-i wird i n Platz in der Datei hello.txt.

-e gibt die Option e auszuführender Ausdruck / Befehl, in diesem Fall s/.

Hinweis: Es ist wichtig, dass Sie -i -e zum Suchen / Ersetzen verwenden. Wenn Sie -ie ausführen, erstellen Sie eine Sicherungskopie jeder Datei mit dem angehängten Buchstaben „e“.

Kommentare

  • Ich ' verwende OS X für das, was ' wert ist, aber dies ist der Fehler, den ich erhalte: sed: 1: " hello.txt ": ungültiger Befehlscode.
  • Es wurde eine Bearbeitung vorgeschlagen, um das -e hinzuzufügen Flagge zu sed. Das Flag -e ist optional, solange der auszuführende Befehl zuerst angezeigt wird, keine Befehlsdatei und kein Befehl arg vorhanden sind und nur ein Befehl vorhanden ist.
  • @roo auf Mac OS X mit -ie Ich erhalte die Datei foo wird als fooe gesichert.
  • ieser Befehl gibt mir eine zusätzliche Datei, die mit -e endet, warum ??: index.html-e sed -i -e ' s / n / d / g ' index.html

  • Auf einem Mac erstellt -i -e eine neue Datei, an die -e angehängt wird. Dies scheint in bash zu funktionieren: sed " -i " " " " -e " " s / wenige / asd / g " " eine Datei.xml "

Antwort

sed -i "s/fea/asd/g" hello.txt 

g: Global

s: Ersatz

-i : Echtzeit funktioniert mit der Datei inplace

Kommentare

  • Beim Umgang mit Symlinks empfiehlt es sich, andernfalls verwandelt -i symlink in eine (bearbeitete) Kopie der Datei.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.