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 Dateifoo
wird alsfooe
gesichert. - 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 "
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
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.