Fortgeschrittene Textverarbeitung (sed, awk)
Erkunden Sie „sed“ zur Stream-Bearbeitung und „awk“ für leistungsstarke Textverarbeitung, Mustersuche und Datenextraktion.
Fortgeschrittene Textverarbeitung (sed, awk) ist eine kostenlose Linux Command Line & Bash Scripting Mastery-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Linux Command Line & Bash Scripting Mastery-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Linux Command Line & Bash Scripting Mastery-Kurs umfasst insgesamt 4 Lektionen.
Datenströme mit sed bearbeiten
sed, kurz für „stream editor“, ist ein leistungsfähiges Befehlszeilenprogramm zum Analysieren und Umwandeln von Text. Es verarbeitet Textströme Zeile für Zeile. Stellen Sie es sich als nicht interaktiven Texteditor vor.
sed liest eine Zeile ein, wendet einen Befehl an (z. B. zum Ersetzen oder Löschen), gibt das Ergebnis aus und fährt anschließend mit der nächsten Zeile fort. Dadurch eignet sich das Programm besonders gut für große Dateien oder weitergeleitete Daten.
Einfache Textersetzung
Die häufigste Verwendung von sed ist das Ersetzen von Text. Dazu verwenden wir den Befehl s, gefolgt von einem Trennzeichen (häufig /), dem zu suchenden Muster, einem weiteren Trennzeichen, dem Ersatztext und einem abschließenden Trennzeichen.
Syntax: sed 's/pattern/replacement/' filename
Versuchen Sie, in einer Beispieldatei „apple“ durch „orange“ zu ersetzen:
#!/bin/bash
# Create a sample file
echo "I like red apple." > fruits.txt
echo "My favorite fruit is apple." >> fruits.txt
echo "Another apple here." >> fruits.txt
echo "Original content:"
cat fruits.txt
echo ""
echo "---"
echo "Running sed command:"
sed 's/apple/orange/' fruits.txt
# Clean up
rm fruits.txtGlobal und ohne Beachtung der Groß- und Kleinschreibung
Standardmäßig ersetzt sed nur das erste Vorkommen eines Musters in jeder Zeile. Um alle Vorkommen in einer Zeile zu ersetzen, verwenden Sie das globale Flag g.
Für eine Suche ohne Beachtung der Groß- und Kleinschreibung verwenden Sie das Flag i. Sie können Flags kombinieren, zum Beispiel gi.
Beispiel: Ersetzen Sie alle Vorkommen von "apple" (ohne Beachtung der Groß- und Kleinschreibung) durch "banana".
#!/bin/bash
# Create a sample file
echo "Apple is good." > fruits.txt
echo "I eat an apple and another Apple." >> fruits.txt
echo "Apples are tasty." >> fruits.txt
echo "Original content:"
cat fruits.txt
echo ""
echo "---"
echo "Running sed command (s/apple/banana/gi):"
sed 's/apple/banana/gi' fruits.txt
# Clean up
rm fruits.txtZeilen mit sed löschen
Sie können sed auch verwenden, um ganze Zeilen zu löschen, die einem bestimmten Muster entsprechen. Dafür wird der Befehl d verwendet.
Syntax: sed '/pattern/d' filename
Das ist nützlich, um unerwünschte Zeilen zu entfernen, zum Beispiel Protokolleinträge mit "DEBUG" oder leere Zeilen.
Löschen wir die Zeilen, die "error" enthalten:
#!/bin/bash
# Create a sample file
echo "INFO: User logged in." > log.txt
echo "WARNING: Disk space low." >> log.txt
echo "ERROR: File not found." >> log.txt
echo "INFO: Operation complete." >> log.txt
echo "ERROR: Permission denied." >> log.txt
echo "Original content:"
cat log.txt
echo ""
echo "---"
echo "Running sed command (/error/d):"
sed '/error/d' log.txt
# Clean up
rm log.txtawk: Sprache zur Mustersuche und -verarbeitung
awk ist ein weiteres leistungsfähiges Werkzeug zur Textverarbeitung, das häufig zur Datenextraktion und Berichterstellung verwendet wird. Während sed ein Stream-Editor ist, ähnelt awk eher einer Programmiersprache, die für Text entwickelt wurde.
awk verarbeitet Textdateien wie sed Zeile für Zeile. Allerdings behandelt es jede Zeile als "Datensatz" und teilt Datensätze anhand eines Trennzeichens in "Felder" (Spalten) auf.
Standardmäßig verwendet awk Leerraum (Leerzeichen und Tabulatoren) als Feldtrennzeichen.
Auf Datenfelder zugreifen
In awk werden Felder mit $1, $2, $3 usw. bezeichnet. $0 steht für die gesamte Zeile.
Sie können bestimmte Felder mit dem Befehl print innerhalb geschweifter Klammern {} ausgeben. Die Syntax lautet: awk '{ print $FIELD_NUMBER }' filename
Geben wir das erste und dritte Feld aus einer einfachen Datendatei aus:
#!/bin/bash
# Create a sample file
echo "Name Age City" > data.txt
echo "Alice 30 NewYork" >> data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (print $1, $3):"
awk '{print $1, $3}' data.txt
# Clean up
rm data.txtZeilen mit awk filtern
Wie sed kann auch awk Zeilen anhand von Mustern filtern. Sie geben ein Muster vor dem Aktionsblock an. Die Aktion wird nur für Zeilen ausgeführt, die dem Muster entsprechen.
Syntax: awk '/pattern/ { action }' filename
Suchen wir nach den Namen der Personen aus "London" und geben nur diese aus:
#!/bin/bash
# Create a sample file
echo "Name Age City" > data.txt
echo "Alice 30 NewYork" >> data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "David 28 London" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (/London/ {print $1}):"
awk '/London/ {print $1}' data.txt
# Clean up
rm data.txtInitialisierung und Abschluss mit awk
Mit awk können Sie Aktionen festlegen, die vor der Verarbeitung aller Zeilen (BEGIN-Block) und nach der Verarbeitung aller Zeilen (END-Block) ausgeführt werden.
BEGIN-Blöcke eignen sich hervorragend zum Ausgeben von Überschriften oder zum Initialisieren von Variablen. END-Blöcke sind ideal zum Ausgeben von Zusammenfassungen, Summen oder Fußzeilen.
Fügen wir unserer Ausgabe eine Kopf- und eine Fußzeile hinzu:
#!/bin/bash
# Create a sample file
echo "Alice 30 NewYork" > data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (BEGIN/END):"
awk 'BEGIN { print "--- User Data ---" } { print $1, $2 } END { print "--- End Report ---" }' data.txt
# Clean up
rm data.txtBedingte Logik in awk
Sie können innerhalb der Aktionsblöcke von awk if-Anweisungen verwenden, um abhängig von Feldwerten oder anderen Bedingungen Logik anzuwenden. Dadurch eignet sich awk besonders gut für komplexe Datenfilterungen und -transformationen.
Syntax: awk '{ if (condition) { action } }' filename
Geben wir nur Benutzer aus, die älter als 25 sind:
#!/bin/bash
# Create a sample file
echo "Alice 30 NewYork" > data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Diana 27 Berlin" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (if $2 > 25):"
awk '{ if ($2 > 25) { print $1, $2 } }' data.txt
# Clean up
rm data.txtSchnelltest: sed und awk
Betrachten Sie den folgenden Inhalt in einer Datei namens names.txt:
John Doe,30,New York
Jane Smith,25,London
Peter Jones,40,Paris
Welcher der folgenden Befehle gibt nur die Namen (das erste Feld) der Personen aus, die älter als 30 sind?
Zusammenfassung: Die Stärken von sed und awk
Sie haben nun die Möglichkeiten von sed zur Stream-Bearbeitung und von awk zur fortgeschrittenen Textverarbeitung kennengelernt!
sedeignet sich hervorragend für einfache Ersetzungen, Löschvorgänge und Transformationen auf Zeilenbasis.awkzeichnet sich beim Parsen strukturierter Texte, bei der Arbeit mit Feldern und beim Anwenden bedingter Logik zur Datenextraktion und Berichterstellung aus.
Diese Werkzeuge sind für Skripting, Protokollanalyse und Datenverarbeitung in der Linux-Umgebung unverzichtbar.
Häufig gestellte Fragen
Ist die Lektion „Fortgeschrittene Textverarbeitung (sed, awk)“ kostenlos?
Ja — der vollständige Text von „Fortgeschrittene Textverarbeitung (sed, awk)“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Linux Command Line & Bash Scripting Mastery-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Linux Command Line & Bash Scripting Mastery-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Fortgeschrittene Textverarbeitung (sed, awk)“?
Erkunden Sie „sed“ zur Stream-Bearbeitung und „awk“ für leistungsstarke Textverarbeitung, Mustersuche und Datenextraktion. Du übst Linux Command Line & Bash Scripting Mastery mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Linux Command Line & Bash Scripting Mastery zu starten?
Keine Vorkenntnisse erforderlich. Linux Command Line & Bash Scripting Mastery auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Fortgeschrittene Textverarbeitung (sed, awk)“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Linux Command Line & Bash Scripting Mastery-Lektion Code schreiben und ausführen?
Ja. Jede Linux Command Line & Bash Scripting Mastery-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Fortgeschrittene Textverarbeitung (sed, awk)
- Archivierung und Komprimierung (tar, gzip, unzip)
- Festplattennutzung und Systeminformationen (df, du, uname)
- Daten sortieren und Duplikate entfernen (sort, uniq, cut)