
Ich weiß, dass diese Frage wahrscheinlich schon einmal beantwortet wurde. Ich habe an verschiedenen Stellen viele Threads dazu gesehen, aber die Antworten sind für mich normalerweise schwer herauszufinden. Ich suche Hilfe bei einem Beispiel für die Verwendung des Befehls „sed“.
Angenommen, ich möchte auf die Datei „hello.txt“ (im selben Verzeichnis wie die Eingabeaufforderung) reagieren. Überall, wo sie den Ausdruck „few“ enthält, sollte dieser in „asd“ geändert werden. Wie würde der Befehl aussehen?
Antwort1
sed
ist derSströmenEd.esor, indem Sie |
(Pipe) verwenden können, umStandard-Streams(insbesondere 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 aber auch direkt mit den -i
unten genannten Parametern bearbeiten.
Folgendes berücksichtigen:
sed -i -e 's/few/asd/g' hello.txt
s/
wird benutzt umSErsetzen Sie den gefundenen Ausdruck few
durch asd
:
Die wenigen, die Mutigen.
Der ASD, der Mutige.
/g
steht für "global", d. h., dies wird für die gesamte Zeile durchgeführt. Wenn Sie das weglassen /g
(bei s/few/asd/
müssen immer drei Schrägstriche vorhanden sein, egal was passiert) und few
zweimal in derselben Zeile vorkommt, few
wird nur der erste in geändert asd
:
Die wenigen Männer, die wenigen Frauen, die Mutigen.
Die asd-Männer, die wenigen Frauen, die Mutigen.
Dies ist in einigen Fällen nützlich, beispielsweise beim Ändern von Sonderzeichen am Zeilenanfang (zum Beispiel beim Ersetzen der Größer-als-Symbole, die manche Leute verwenden, um vorheriges Material in E-Mail-Threads zu zitieren, durch einen horizontalen Tabulator, während eine zitierte algebraische Ungleichung weiter unten in der Zeile unverändert bleibt), aber in Ihrem Beispiel, in dem Sie angeben, dassüberall few
Wenn es ausgetauscht werden muss, stellen Sie sicher, dass Sie es haben /g
.
Die folgenden zwei Optionen (Flags) werden zu einer zusammengefasst -ie
:
-i
Option wird zum Bearbeiten verwendetichn Platz auf der Datei hello.txt
.
-e
Option gibt dietAuszuführender Ausdruck/Befehl, in diesem Fall s/
.
Hinweis: Es ist wichtig, dass Sie -i -e
zum Suchen/Ersetzen verwenden. Wenn Sie dies tun -ie
, erstellen Sie eine Sicherungskopie aller Dateien mit dem angehängten Buchstaben „e“.
Antwort2
sed -i 's/fea/asd/g' hello.txt
G:Allgemein
S:Ersatz
-ich: Echtzeit arbeitet mit Dateian Ort und Stelle