Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Textdateien lesen und durchsuchen

Nach dieser Lektion: Ich kann Textdateien im Terminal lesen und durchsuchen.

Lektion, 45 Min.Keine Befehle

Die Nadel im Protokoll

Der Webshop ist heute Morgen kurz ausgefallen. Ihr Team will wissen, was passiert ist.

Der Server schreibt jedes Ereignis in eine Textdatei. Sie hat vielleicht 50.000 Zeilen.

Sie lesen sie nicht von oben nach unten. Sie suchen gezielt, mit wenigen Befehlen.

Am Ende dieser Lektion

Notiz

Ich kann Textdateien im Terminal lesen und durchsuchen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Protokolldateieine Textdatei, in die ein Programm Ereignisse schreibt; auch Log genannt
Ausgabeder Text, den ein Befehl zurückgibt
Suchmusterder Text, nach dem Sie suchenFEHLER
Optionein Zusatz hinter dem Befehl, der sein Verhalten ändert-n 2
Pipedas Zeichen |, das die Ausgabe eines Befehls an den nächsten weitergibt

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

cat, head und wc zeigen eine Datei

cat datei gibt die ganze Datei aus. Das ist bei langen Dateien zu viel.

head -n 2 datei zeigt nur die ersten zwei Zeilen. tail -n 2 datei zeigt die letzten zwei.

wc -l datei zählt die Zeilen. Die Option -l steht für „lines“, also Zeilen.

Eine Protokolldatei lesen

Code: bash
# Eine kleine Protokolldatei eines Webshops anlegen.
printf '08:01 INFO Bestellung 2001 angelegt\n' > shop.log
printf '08:03 INFO Zahlung für 2001 erhalten\n' >> shop.log
printf '08:07 FEHLER Zahlung für 2002 abgelehnt\n' >> shop.log
printf '08:09 INFO Bestellung 2003 angelegt\n' >> shop.log
printf '08:15 FEHLER Lager nicht erreichbar\n' >> shop.log
printf '08:20 INFO Bestellung 2004 angelegt\n' >> shop.log

# Alles anzeigen.
cat shop.log

# Nur die ersten zwei Zeilen.
head -n 2 shop.log

# Wie viele Zeilen hat die Datei?
wc -l shop.log

grep sucht Zeilen mit einem Muster

grep FEHLER shop.log gibt jede Zeile aus, in der das Wort FEHLER steht. Alle anderen Zeilen bleiben weg.

Mit -i ignoriert grep die Groß- und Kleinschreibung. Mit -c zählt es nur die Treffer.

Mit -v kehren Sie die Suche um: Sie sehen alle Zeilen ohne das Muster.

Fehler im Protokoll finden

Code: bash
printf '08:01 INFO Bestellung 2001 angelegt\n' > shop.log
printf '08:07 FEHLER Zahlung für 2002 abgelehnt\n' >> shop.log
printf '08:09 INFO Bestellung 2003 angelegt\n' >> shop.log
printf '08:15 FEHLER Lager nicht erreichbar\n' >> shop.log
printf '08:20 info Bestellung 2004 angelegt\n' >> shop.log

# Alle Zeilen mit dem Wort FEHLER.
grep FEHLER shop.log

# Groß- und Kleinschreibung ignorieren.
grep -i info shop.log

# Nur zählen, nicht anzeigen.
grep -c FEHLER shop.log

# Alle Zeilen ohne FEHLER.
grep -v FEHLER shop.log

Beispiel: grep mit der Datei von oben

BefehlAusgabe
grep FEHLER shop.logDie Zeilen von 08:07 und 08:15
grep -c FEHLER shop.log2
grep -v FEHLER shop.logAlle Zeilen mit INFO
grep fehler shop.logNichts: kleines „fehler“ kommt nicht vor
grep -i fehler shop.logDie Zeilen von 08:07 und 08:15

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Fehler

Warnung

Viele glauben, grep finde ein Wort in jeder Schreibweise. Es unterscheidet aber Groß und Klein. Findet grep nichts, versuchen Sie es mit -i, bevor Sie denken, das Wort stehe nicht in der Datei.

Eine Pipe verbindet zwei Befehle

Das Zeichen | heißt Pipe. Es gibt die Ausgabe des linken Befehls an den rechten weiter.

grep FEHLER shop.log | wc -l sucht zuerst alle Fehlerzeilen. Dann zählt wc -l sie.

So bauen Sie aus kleinen Befehlen eine Antwort auf eine echte Frage.

Zwei Befehle verbinden

Code: bash
printf '08:01 INFO Bestellung 2001 angelegt\n' > shop.log
printf '08:07 FEHLER Zahlung für 2002 abgelehnt\n' >> shop.log
printf '08:09 INFO Bestellung 2003 angelegt\n' >> shop.log
printf '08:15 FEHLER Lager nicht erreichbar\n' >> shop.log
printf '08:21 FEHLER Zahlung für 2005 abgelehnt\n' >> shop.log

# Die Ausgabe des einen Befehls wird die Eingabe des nächsten.
grep FEHLER shop.log | wc -l

# Erst filtern, dann die letzte Zeile nehmen.
grep FEHLER shop.log | tail -n 1

# Ihr Auftrag: Wie viele Zeilen enthalten das Wort Zahlung?
# Bauen Sie dafür eine Pipe mit grep und wc -l.

Was ein Team erwartet

Tipp

Bei einer Störung fragt jemand, wie viele Fehler es heute gab. Wer dafür grep und wc nutzen kann, antwortet in einer Minute und muss keine Datei öffnen.

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.