In diesem Tutorial zeige ich, wie du Textströme in Linux mit verschiedenen Filtern verarbeiten kannst. Filter sind Programme, die einen Datenstrom lesen, verarbeiten und die Ausgabe in einer bestimmten Form an das Terminal oder ein weiteres Programm weiterleiten. Die häufigsten Filter in Linux sind Werkzeuge wie grep
, sed
, awk
, cut
, sort
, uniq
, tr
, und tee
.
Voraussetzungen:
- Grundkenntnisse in der Kommandozeile
- Zugang zu einem Linux- oder Unix-basierten System
1. Eingabe und Ausgabe von Datenströmen
In der Kommandozeile können Befehle in einer Pipeline verknüpft werden, um die Ausgabe eines Befehls als Eingabe für den nächsten zu nutzen.
bashCode kopierencat datei.txt | grep "Suchbegriff"
Hier liest cat
den Inhalt von datei.txt
und leitet diesen an grep
weiter, welches dann nach Zeilen sucht, die den „Suchbegriff“ enthalten.
2. Verwendung von Filtern
2.1. grep
: Zeilen anhand von Mustern filtern
grep
durchsucht Textströme nach bestimmten Mustern und gibt die Zeilen aus, die das Muster enthalten.
grep "Fehler" /var/log/syslog
Suche in der Datei /var/log/syslog
nach Zeilen, die das Wort „Fehler“ enthalten.
Optionen:
-i
: Ignoriere Groß- und Kleinschreibung-v
: Zeige Zeilen an, die nicht dem Muster entsprechen-r
: Durchsuche Verzeichnisse rekursiv
2.2. sed
: Text auf der Kommandozeile bearbeiten
sed
ist ein Stream-Editor, der Text im Datenstrom bearbeiten kann. Er kann verwendet werden, um Text zu suchen und zu ersetzen oder bestimmte Zeilen zu bearbeiten.
sed 's/Linux/UNIX/' datei.txt
Ersetzt das Wort „Linux“ durch „UNIX“ in der Datei datei.txt
.
Optionen:
-i
: Änderungen direkt in der Datei speicherns/Muster/Ersetzung/
: Ersetzen eines Musters
2.3. awk
: Text verarbeiten und analysieren
awk
ist ein leistungsstarkes Tool zur Verarbeitung und Analyse von Textdateien, insbesondere wenn der Text strukturiert ist (z.B. durch Leerzeichen oder Kommata getrennt).
awk '{print $1, $3}' datei.txt
Gibt die erste und dritte Spalte jeder Zeile in datei.txt
aus.
Optionen:
-F
: Definiere einen Trennzeichen-Delimiter (z.B.-F ":"
für durch Doppelpunkte getrennten Text){print $1, $2}
: Gibt bestimmte Spalten aus
2.4. cut
: Spalten ausschneiden
cut
extrahiert bestimmte Felder oder Spalten aus einem Textstrom.
cut -d "," -f 2 datei.csv
Extrahiert die zweite Spalte einer CSV-Datei.
Optionen:
-d
: Definiere das Trennzeichen (z.B.,
für CSV)-f
: Wähle die Spaltennummer
2.5. sort
: Zeilen sortieren
sort
sortiert die Zeilen einer Datei.
sort datei.txt
Sortiert die Zeilen in datei.txt
alphabetisch.
Optionen:
-n
: Sortiere numerisch-r
: Sortiere rückwärts-k
: Sortiere nach einer bestimmten Spalte
2.6. uniq
: Doppelte Zeilen entfernen
uniq
entfernt aufeinanderfolgende doppelte Zeilen in einer Datei. In Kombination mit sort
kann es verwendet werden, um doppelte Zeilen vollständig zu entfernen.
sort datei.txt | uniq
Sortiert die Datei und entfernt doppelte Zeilen.
Optionen:
-c
: Zählt die Anzahl der Vorkommen jeder Zeile-d
: Zeigt nur doppelte Zeilen an
2.7. tr
: Zeichen ersetzen
tr
wird verwendet, um Zeichen zu ersetzen, zu löschen oder zu komprimieren.
echo "Hallo Welt" | tr '[:lower:]' '[:upper:]'
Wandelt Kleinbuchstaben in Großbuchstaben um.
Optionen:
-d
: Lösche Zeichen-s
: Ersetze wiederholte Zeichen durch ein einzelnes Zeichen
2.8. tee
: Ausgabe aufteilen
tee
leitet die Ausgabe gleichzeitig an eine Datei und das Terminal weiter.
ls | tee datei.txt
Speichert die Ausgabe von ls
in datei.txt
und zeigt sie gleichzeitig auf dem Bildschirm an.
3. Pipelines und Verkettung von Befehlen
Die wahre Stärke der Filter zeigt sich, wenn sie in einer Pipeline miteinander kombiniert werden.
Beispiel: Log-Dateien filtern und sortieren
Angenommen, du möchtest doppelte IP-Adressen in einer Logdatei finden, die nach einem bestimmten Fehler durchsucht wird:
grep "Fehler" /var/log/syslog | awk '{print $5}' | sort | uniq -c | sort -nr
Erklärung:
grep
: Sucht nach Zeilen mit „Fehler“awk
: Extrahiert die 5. Spalte (angenommen, es handelt sich um IP-Adressen)sort
: Sortiert die IP-Adressen alphabetischuniq -c
: Zählt doppelte Einträgesort -nr
: Sortiert das Ergebnis numerisch in absteigender Reihenfolge
4. Zusammenfassung
Die wichtigsten Filter zur Textverarbeitung in Linux sind:
grep
zum Filtern nach Musternsed
zum Suchen und Ersetzen von Textawk
zur Spalten-basierten Analysecut
zum Ausschneiden bestimmter Spaltensort
zum Sortieren von Textuniq
zum Entfernen doppelter Zeilentr
zum Ersetzen von Zeichentee
zum Aufteilen der Ausgabe
Diese Befehle bieten die Möglichkeit, leistungsstarke Pipelines zu erstellen, die Textströme effektiv verarbeiten. Indem du sie miteinander kombinierst, kannst du umfangreiche Textverarbeitungsaufgaben direkt auf der Kommandozeile erledigen.