Was ist SED in Linux und wie wird es verwendet?

sed steht für Sströmen Ed.itor und ist ein häufig verwendeter Befehl in Linux/Unix. Der Name ist ein Kofferwort aus diesen beiden Wörtern. Es handelt sich nicht um einen Texteditor, obwohl er Text ändert. Stattdessen empfängt sed Texteingaben als „Stream“ und bearbeitet den Stream gemäß Ihren Anweisungen.
Im Großen und Ganzen wird sed als Befehlszeilenversion von Suchen und Ersetzen verwendet. Der Hauptbefehl des Programms wird verwendet, um eine Zeichenfolge durch eine andere zu ersetzen. Dies ist nützlich, um Such- und Ersetzungsfunktionen für eine Reihe von Dateien auszuführen, aber es ist nicht so einfach zu verwenden wie etwas aus Notepad oder Word. Sie werden feststellen, dass die Syntax ein wenig gewöhnungsbedürftig ist, aber wenn Sie das einmal verstanden haben, werden Sie sehen, wie unglaublich leistungsstark dieser kompakte Editor sein kann.
Verwenden von sed zur Substitution
Um sed zu verwenden, müssen Sie ein Terminalfenster öffnen. Der Befehl wird mit sed aufgerufen, aber wenn Sie das alleine eingeben, passiert nichts. Sie müssen einen der Befehle sowie einige Parameter angeben.
Der am häufigsten verwendete Parameter ist substitute oder s. Ein einfacher sed-Ersetzungsbefehl sieht ungefähr wie folgt aus:
Dieser Befehl weist sed an, eingehenden Text zu scannen und jedes Vorkommen der Zeichenfolge „Katze“ durch „Hund“ zu ersetzen. Zur Demonstration verwenden wir den Echo-Befehl, um sed etwas zum Arbeiten zu geben.
Echo-Katzenkatapult | sed „s/Katze/Hund/“[enlazatom_show_links]Der sed-Befehl besteht aus drei Hauptteilen. Zuerst gibt es sed, das das Programm startet. Dann gibt es s, das den Ersetzungsbefehl startet. Der Schrägstrich / ist ein Trennzeichen. Die Zeichenfolge danach ist die Zeichenfolge, nach der sed sucht. Die Zeichenfolge nach dem zweiten Schrägstrich sind die Ersetzungszeichen, die sed in den Stream schreibt. Der letzte Schrägstrich schließt den Befehl ab. Alles in allem ist es „s/zu suchender Text/zu ersetzender Text/“.
Beachten Sie die einfachen Anführungszeichen in diesem Beispiel. Mit den einfachen Anführungszeichen können Sie Metazeichen in Ihrem Befehl verwenden. Obwohl Anführungszeichen für die meisten unserer Beispiele nicht unbedingt erforderlich sind, sollten Sie sich angewöhnen, für alle Befehle Anführungszeichen zu verwenden.
Und was ist mit Teilzeichenfolgen? Der obige Befehl funktioniert bei jedem Vorkommen der Zeichenfolge „cat“, selbst wenn diese Teil eines anderen Wortes ist. Beispielsweise wird aus „catapult“ „dogapult“, während aus „catamaran“ „dogamaran“ wird.
Echo-Katapult | sed ‚s/Katze/Hund/‘Globaler Ersatz
In unserem ersten Beispiel ist Ihnen vielleicht aufgefallen, dass nur die erste Instanz der übereinstimmenden Zeichenfolge ersetzt wurde. Wie viele GNU-Dienstprogramme ist sed zeilenbasiert. Daher wird es nur bei der ersten Übereinstimmung in einer Zeile ausgeführt. Wenn Sie mehrere Übereinstimmungen für Ihre Kandidatenzeichenfolge in der Zeile haben, wird nur die erste geändert. Damit sed bei jedem Vorkommen der Zielzeichenfolge funktioniert, verwenden Sie das Flag g am Ende des Befehls:
Dies würde wie im folgenden Beispiel funktionieren:
Echo Cat Katapult Katamaran | sed ‚s/Katze/Hund/g‘Ohne das globale Flag würde nur die erste Instanz von „cat“ in jeder Zeile ersetzt.
Festlegen von Eingabe- und Ausgabedateien
Standardmäßig arbeitet sed mit der Standardeingabe. Das ist jedoch nicht sehr nützlich. Um sed auf einer Datei auszuführen, geben Sie den Dateinamen am Ende des Befehls an, wie folgt:
sed 's/Katze/Hund/g' alteDatei.txt > neueDatei.txtDadurch wird sed auf „oldfile.txt“ ausgeführt und die Ausgabe des Befehls in „newfile.txt“ gespeichert. Wenn „newfile.txt“ nicht vorhanden ist, wird es vom Befehl erstellt. Wenn Sie keine Ausgabedatei angeben, gibt sed den neuen Text der Datei in die Standardeingabe zurück.
Wenn Sie den Inhalt einer Datei überschreiben möchten, müssen Sie das Flag -i verwenden. Dieses Flag führt die Änderungen „an Ort und Stelle“ aus.
sed -i '' 's/Katze/Hund' alteDatei.txtDieser Befehl überschreibt den Inhalt der Zieldatei sofort, was ein wenig gefährlich ist. Um auf Nummer sicher zu gehen, können Sie vor Ort ein Backup erstellen.
Um eine Sicherungskopie der Datei zu erstellen, fügen Sie nach -i eine Erweiterung ein. Es muss keine funktionale Erweiterung sein: „.bu“ oder „.bak“ funktionieren gut. Dadurch wird eine Sicherungsdatei mit einer Erweiterung erstellt.
sed -i.bak 's/Katze/Hund' alteDatei.txtDadurch wird „oldfile.txt.bak“ erstellt, das die unbearbeiteten Textdaten der Originalversion von „oldfile.txt“ enthält.
Passende reguläre Ausdrücke
Die wahre Stärke von sed liegt im Abgleichen von regulären Ausdrücken. Dadurch können Sie Muster für das Abgleichen festlegen, anstatt wörtliche Zeichenfolgen. Wir könnten beispielsweise etwas wie die folgende Zeichenfolge verwenden, um einen beliebigen Satz von einer oder mehreren Zahlen zu wiederholen:
echo "123 abc" | sed 's/[0-9][0-9]*/& &/'Weiteres Lernen
sed ist ein extrem leistungsfähiges Dienstprogramm mit einer Leistungsfähigkeit, die einer Skriptsprache ähnelt. Weitere Informationen zu den vollständigen Funktionen von sed finden Sie unter Bruce Barnetts umfassender Leitfaden zu sed.
Schreibe einen Kommentar