Linux sed -Befehl mit praktischen Beispielen

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie den leistungsstarken sed (stream editor) -Befehl in Linux für die Textverarbeitung und -bearbeitung verwenden können. Das Lab behandelt die Grundlagen des sed -Befehls, einschließlich der Durchführung von Textersetzungen, der Bearbeitung mehrerer Dateien und vieles mehr. Sie werden verschiedene sed -Befehle und ihre praktischen Anwendungen erkunden, sodass Sie Textdaten effizient auf der Kommandozeile manipulieren und transformieren können.

Das Lab beginnt mit der Einführung in die Grundlagen des sed -Befehls und zeigt, wie Sie den gesamten Inhalt einer Datei ausgeben, bestimmte Zeilen drucken, Text ersetzen, Zeilen löschen sowie Text einfügen oder anhängen können. Anschließend geht es zu fortgeschrittenen Textersetzungstechniken, die Ihnen zeigen, wie Sie Ersetzungen in mehreren Dateien vornehmen können. Abschließend behandelt das Lab die Bearbeitung mehrerer Dateien mit sed, sodass Sie Ihre Textverarbeitungsworkflows optimieren können.

Linux Commands Cheat Sheet


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/find("File Searching") linux/TextProcessingGroup -.-> linux/sed("Stream Editing") subgraph Lab Skills linux/echo -.-> lab-422906{{"Linux sed -Befehl mit praktischen Beispielen"}} linux/cat -.-> lab-422906{{"Linux sed -Befehl mit praktischen Beispielen"}} linux/find -.-> lab-422906{{"Linux sed -Befehl mit praktischen Beispielen"}} linux/sed -.-> lab-422906{{"Linux sed -Befehl mit praktischen Beispielen"}} end

Grundlagen des sed -Befehls verstehen

In diesem Schritt lernen wir die Grundlagen des sed (stream editor) -Befehls in Linux. Der sed -Befehl ist ein leistungsstarkes Werkzeug für die Textverarbeitung und -bearbeitung und ermöglicht es Ihnen, verschiedene Operationen an Textdateien durchzuführen.

Zunächst erstellen wir eine Beispiel-Textdatei, mit der wir arbeiten können:

echo "This is a sample text file." > sample.txt

Jetzt erkunden wir einige grundlegende sed -Befehle:

Ganze Datei ausgeben

Um den gesamten Inhalt der Datei auszugeben, verwenden Sie den folgenden Befehl:

sed 's/.*/' sample.txt

Beispielausgabe:

This is a sample text file.

Eine bestimmte Zeile ausgeben

Um eine bestimmte Zeile auszugeben, verwenden Sie die Zeilennummer zusammen mit dem p -Befehl:

sed -n '2p' sample.txt

Beispielausgabe:

This is a sample text file.

Text ersetzen

Um Text zu ersetzen, verwenden Sie den s -Befehl, gefolgt von dem Muster und der Ersetzung:

sed 's/sample/new/' sample.txt

Beispielausgabe:

This is a new text file.

Zeilen löschen

Um eine bestimmte Zeile zu löschen, verwenden Sie den d -Befehl, gefolgt von der Zeilennummer:

sed '2d' sample.txt

Beispielausgabe:

This is a sample text file.

Text einfügen oder anhängen

Um Text vor einer Zeile einzufügen, verwenden Sie den i -Befehl. Um Text nach einer Zeile anzuhängen, verwenden Sie den a -Befehl:

sed '2i This is an inserted line.' sample.txt
sed '2a This is an appended line.' sample.txt

Beispielausgabe:

This is a sample text file.
This is an inserted line.
This is a sample text file.
This is an appended line.

Dies sind nur einige grundlegende Beispiele für die Verwendung des sed -Befehls. Im nächsten Schritt werden wir fortgeschrittenere sed -Operationen erkunden, wie z. B. die Durchführung von Textersetzungen in mehreren Dateien.

Textersetzung mit sed durchführen

In diesem Schritt werden wir fortgeschrittenere Textersetzungen mit dem sed -Befehl erkunden.

Zunächst erstellen wir eine neue Beispiel-Datei mit mehreren Vorkommen des Wortes "old":

echo "This is an old text. Replace the old text with new text." > sample.txt

Alle Vorkommen eines Wortes ersetzen

Um alle Vorkommen eines Wortes zu ersetzen, verwenden Sie die globale g -Flagge:

sed 's/old/new/g' sample.txt

Beispielausgabe:

This is an new text. Replace the new text with new text.

Nur das erste Vorkommen ersetzen

Um nur das erste Vorkommen zu ersetzen, lassen Sie die globale g -Flagge weg:

sed 's/old/new/' sample.txt

Beispielausgabe:

This is an new text. Replace the old text with new text.

Auf einer bestimmten Zeile ersetzen

Um Text auf einer bestimmten Zeile zu ersetzen, verwenden Sie die Zeilennummer vor dem s -Befehl:

sed '1s/old/new/' sample.txt

Beispielausgabe:

This is an new text. Replace the old text with new text.

Mit regulären Ausdrücken ersetzen

Sed unterstützt auch reguläre Ausdrücke. Um Text mit einem regulären Ausdruck zu ersetzen, verwenden Sie die \1 -Syntax, um auf gefangene Gruppen zu verweisen:

sed 's/\(This.*\)old\(.*\)/\1new\2/' sample.txt

Beispielausgabe:

This is an new text. Replace the new text with new text.

In mehreren Dateien ersetzen

Um Text in mehreren Dateien zu ersetzen, übergeben Sie die Dateinamen als Argumente an den sed -Befehl:

sed 's/old/new/g' sample.txt another_file.txt

Dadurch wird die Textersetzung sowohl in sample.txt als auch in another_file.txt durchgeführt.

Im nächsten Schritt lernen wir, wie wir mehrere Dateien mit dem sed -Befehl bearbeiten können.

Mehrere Dateien mit sed bearbeiten

In diesem Schritt lernen wir, wie wir den sed -Befehl verwenden können, um mehrere Dateien auf einmal zu bearbeiten.

Zunächst erstellen wir zwei Beispiel-Textdateien:

echo "This is the first file." > file1.txt
echo "This is the second file." > file2.txt

Text in mehreren Dateien ersetzen

Um Text in mehreren Dateien zu ersetzen, übergeben Sie einfach die Dateinamen als Argumente an den sed -Befehl:

sed 's/first/updated/g' file1.txt file2.txt

Beispielausgabe:

This is the updated file.
This is the second file.

Dateien direkt bearbeiten

Standardmäßig gibt sed die modifizierte Ausgabe auf der Konsole aus. Um die Dateien direkt zu bearbeiten, verwenden Sie die Option -i:

sed -i 's/second/new/g' file1.txt file2.txt

Jetzt wurden die Dateien file1.txt und file2.txt direkt modifiziert.

Eine Sicherungskopie erstellen

Wenn Sie eine Sicherungskopie der ursprünglichen Dateien aufbewahren möchten, können Sie die Option -i mit einer Sicherungserweiterung verwenden:

sed -i.bak 's/new/updated/g' file1.txt file2.txt

Dadurch werden die Sicherungsdateien file1.txt.bak und file2.txt.bak erstellt, die den ursprünglichen Inhalt enthalten.

Dateien rekursiv bearbeiten

Um Dateien rekursiv in einem Verzeichnis zu bearbeiten, können Sie den find -Befehl zusammen mit sed verwenden:

find . -type f -name "*.txt" -exec sed -i 's/updated/final/g' {} \;

Dadurch werden alle Vorkommen von "updated" durch "final" in allen .txt -Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen ersetzt.

Mit diesen Techniken können Sie mehrere Dateien effizient mit dem sed -Befehl bearbeiten. Dies kann besonders nützlich sein, wenn Sie umfangreiche Textersetzungen oder -modifikationen in mehreren Dateien vornehmen müssen.

Zusammenfassung

In diesem Lab haben wir die Grundlagen des sed -Befehls in Linux gelernt, einschließlich des Ausgebens der gesamten Datei, des Ausgebens bestimmter Zeilen, der Durchführung von Textersetzungen, des Löschens von Zeilen sowie des Einfügens oder Anhängens von Text. Wir haben auch fortgeschrittenere Textersetzungen mit sed erkundet und gelernt, wie man mehrere Vorkommen eines Wortes in einer Datei ersetzt und wie man mehrere Dateien gleichzeitig mit sed bearbeitet.

Die wichtigsten Erkenntnisse aus diesem Lab sind die Vielseitigkeit und die Leistungsfähigkeit des sed -Befehls für Textverarbeitungs- und -bearbeitungsaufgaben in der Linux -Umgebung.

Linux Commands Cheat Sheet