Unix / Linux - Pipes and Filters

Hallo Zusammen, zukünftige Unix/Linux-Zauberer! Heute machen wir uns auf eine aufregende Reise in die Welt der Pipes und Filter. Keine Sorge, wenn du neu im Programmieren bist – ich werde dich schrittweise durch führen, genau wie ich es in den letzten Jahren für unzählige Schüler getan habe. Los geht's!

Unix / Linux - Pipes & Filters

Was sind Pipes und Filter?

Bevor wir ins Detail gehen, lassen Sie uns verstehen, was Pipes und Filter sind. Stell dir vor, du bist in einer Küche und bereitest ein köstliches Gericht zu. Du hast verschiedene Küchenutensilien, die jeweils eine spezifische Aufgabe erfüllen – ein Messer zum Schneiden, einen Mixer zum Mischen, ein Sieb zum Sieben! In Unix/Linux arbeiten Pipes und Filter ähnlich.

  • Filter sind Befehle, die Eingaben entgegennehmen, diese verarbeiten und Ausgaben erzeugen.
  • Pipes sind die "Rohre", die diese Filter verbinden und es Daten ermöglichen, von einem Befehl zum anderen zu fließen.

Gemeinsam bilden sie ein leistungsstarkes System zur Verarbeitung und Manipulation von Daten. Lassen Sie uns nun einige der häufigsten und nützlichsten Befehle ansehen.

Der grep-Befehl

Was ist grep?

grep steht für "Global Regular Expression Print". Es ist ein superscharfes Suchwerkzeug, das dir hilft, spezifische Muster in Texten zu finden.

Grundlegende Verwendung

Hier ist die grundlegende Syntax:

grep [Optionen] Muster [Datei...]

Lassen Sie uns mit einem einfachen Beispiel beginnen. Angenommen, wir haben eine Datei namens fruits.txt mit folgendem Inhalt:

apple
banana
cherry
date
elderberry
fig
grape

Wenn wir alle Früchte finden möchten, die den Buchstaben 'a' enthalten, können wir folgendes verwenden:

grep 'a' fruits.txt

Dies wird Folgendes ausgeben:

apple
banana
grape

Nützliche Optionen

Hier sind einige handliche Optionen für grep:

Option Beschreibung
-i Groß- und Kleinschreibung ignorieren
-v Übereinstimmungen umkehren (zeige Zeilen, die nicht übereinstimmen)
-n Zeilennummern anzeigen
-c Übereinstimmende Zeilen zählen

Lassen Sie uns einige ausprobieren:

grep -i 'A' fruits.txt  # Findet 'a' oder 'A'
grep -v 'a' fruits.txt  # Findet Zeilen ohne 'a'
grep -n 'e' fruits.txt  # Zeigt Zeilennummern für Zeilen mit 'e'
grep -c 'r' fruits.txt  # Zählt Zeilen, die 'r' enthalten

Der sort-Befehl

Was ist sort?

sort macht genau das, was man erwarten würde – es sortiert Dinge! Es ist wie ein hilfsbereiter Assistent, der deine Daten schnell alphabetisch oder numerisch anordnen kann.

Grundlegende Verwendung

Die grundlegende Syntax ist:

sort [Optionen] [Datei...]

Verwenden wir unsere fruits.txt Datei:

sort fruits.txt

Dies wird Folgendes ausgeben:

apple
banana
cherry
date
elderberry
fig
grape

Nützliche Optionen

Hier sind einige häufige Optionen für sort:

Option Beschreibung
-r Umgekehrte Reihenfolge
-n Numerisch sortieren
-u Duplikate entfernen
-k Nach spezifischem Feld sortieren

Lassen Sie uns diese ausprobieren:

sort -r fruits.txt  # Umgekehrte alphabetische Reihenfolge

Nun erstellen wir eine Datei namens numbers.txt mit einigen Zahlen:

5
2
8
1
3

Wir können diese numerisch sortieren:

sort -n numbers.txt

Die pg und more Befehle

Was sind pg und more?

pg und more sind Paging-Programme. Sie sind wie höfliche Kellner, die deine Daten eine Seite nach der anderen servieren, anstatt sie dir auf einmal zu überlassen.

Grundlegende Verwendung

Für more:

more [Optionen] [Datei...]

Für pg:

pg [Optionen] [Datei...]

Lassen Sie uns more mit einer längeren Datei ausprobieren. Wir erstellen long_text.txt mit dem Inhalt dieses Tutorials:

more long_text.txt

Dies wird den Inhalt eine Seite nach der anderen anzeigen. Drücke Leertaste, um die nächste Seite anzuzeigen, oder 'q', um zu beenden.

pg funktioniert ähnlich, bietet aber mehr Funktionen:

pg long_text.txt

Mit pg kannst du ':n' verwenden, um zur nächsten Seite zu gehen, ':p' für die vorherige Seite und '/Muster', um nach Text zu suchen.

Alles zusammenbringen: Die Macht der Pipes

Nun kommen wir zum spannenden Teil – die Kombination dieser Befehle mit Pipes! Das Pipe-Symbol '|' verbindet die Ausgabe eines Befehls mit der Eingabe eines anderen.

Lassen Sie uns eine Datei namens employees.txt mit folgendem Inhalt erstellen:

Alice,Sales,50000
Bob,Marketing,45000
Charlie,Engineering,60000
David,Sales,55000
Eve,Marketing,48000
Frank,Engineering,62000

Nun verwenden wir Pipes, um einige magische Dinge zu tun:

grep 'Sales' employees.txt | sort -k3 -nr

Dieser Befehl macht zwei Dinge:

  1. grep 'Sales' employees.txt findet alle Zeilen, die 'Sales' enthalten
  2. Die Ausgabe wird dann an sort -k3 -nr weitergeleitet, das numerisch (-n) in umgekehrter Reihenfolge (-r) nach dem dritten Feld (-k3), dem Gehalt, sortiert.

Das Ergebnis:

David,Sales,55000
Alice,Sales,50000

Ist das nicht toll? Wir haben gerade unsere Daten gefiltert und in einem Durchgang sortiert!

Schlussfolgerung

Und hier haben wir es, Leute! Wir haben die Welt der Pipes und Filter bereist, die mächtige grep, die ordentliche sort und die geduldige more und pg kennengelernt. Denken Sie daran, Übung macht den Meister. Versuchen Sie, diese Befehle auf verschiedene Weisen zu kombinieren, und Sie werden bald ein Unix/Linux-Pipe-Meister sein!

Frohes Coden und möge deine Pipes stets frei und deine Filter stets sauber sein!

Credits: Image by storyset