Verkettung mehrerer Befehle
Teil des Abschnitts Grundlagen der Terminal-Journey von Coddy — Lektion 45 von 82.
Sie sind nicht darauf beschränkt, nur zwei Befehle miteinander zu verbinden. Pipes können so viele Befehle verketten, wie Sie benötigen, wobei jeder die Ausgabe des vorherigen Befehls verarbeitet.
Fügen Sie einfach weitere |-Symbole hinzu, um die Pipeline zu erweitern:
cat data.txt | sort | head -5Dies liest die Datei, sortiert alle Zeilen alphabetisch und zeigt dann nur die ersten 5 Ergebnisse an. Die Daten fließen nacheinander von links nach rechts durch jeden Befehl.
Hier ist ein praktisches Beispiel, das eindeutige sortierte Einträge findet:
cat names.txt | sort | uniqDer Dateiinhalt wird zuerst sortiert (wodurch Duplikate gruppiert werden), dann entfernt uniq aufeinanderfolgende doppelte Zeilen. Die Reihenfolge ist hier wichtig — uniq entfernt nur benachbarte Duplikate, daher muss die Sortierung zuerst erfolgen.
Du kannst noch mehr Stufen hinzufügen. Um zu zählen, wie viele eindeutige Namen existieren:
cat names.txt | sort | uniq | wc -lJede Pipe fügt einen weiteren Transformationsschritt hinzu. Denken Sie beim Erstellen längerer Pipelines darüber nach, was jeder Befehl als Eingabe benötigt und was er als Ausgabe erzeugt. Das Ausgabeformat eines Befehls muss als Eingabe für den nächsten sinnvoll sein.
Aufgabe
EinfachDie Datei visitors.txt enthält eine Liste von Besuchernamen mit Duplikaten. Verwenden Sie eine Pipeline mit drei Befehlen, um zu zählen, wie viele eindeutige Besucher vorhanden sind.
Führen Sie einen einzelnen Befehl aus, der:
catverwendet, umvisitors.txtzu lesen- An
sortweiterleitet, um die Namen alphabetisch zu ordnen - An
uniqweiterleitet, um doppelte Einträge zu entfernen - An
wc -lweiterleitet, um die eindeutigen Namen zu zählen
Hinweis: Verketten Sie alle vier Befehle mit mehreren
|-Symbolen. Denken Sie daran, dassuniqnur benachbarte Duplikate entfernt, daher muss die Sortierung davor erfolgen.
Spickzettel
Pipes können mehrere Befehle miteinander verketten, wobei jeder Befehl die Ausgabe des vorherigen verarbeitet. Verwenden Sie das Symbol |, um Befehle zu verbinden:
cat data.txt | sort | head -5Daten fließen nacheinander von links nach rechts durch jeden Befehl.
Um eindeutige sortierte Einträge zu finden:
cat names.txt | sort | uniqDer Befehl uniq entfernt aufeinanderfolgende doppelte Zeilen, daher muss zuerst sortiert werden, um Duplikate zu gruppieren.
Um eindeutige Einträge zu zählen, fügen Sie wc -l zur Pipeline hinzu:
cat names.txt | sort | uniq | wc -lStellen Sie beim Erstellen von Pipelines sicher, dass das Ausgabeformat eines Befehls als Eingabe für den nächsten sinnvoll ist.
Probier es selbst
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Verzeichnisse
Ein Verzeichnis erstellenEin Verzeichnis kopierenEin Verzeichnis verschieben und umbenennenEin Verzeichnis löschenZusammenfassung - Verzeichnisoperationen7Dateiinhalt
Head und TailWortanzahlSort-BefehlUniq-BefehlGrep GrundlagenGrep mit FlagsZusammenfassung - Textdetektiv10Log-Analyzer-Projekt
ProjektübersichtAnzeigen der Logdatei2Navigation
Arbeitsverzeichnis anzeigenDateien auflistenVerzeichnis wechselnAbsolute vs. relative PfadeHome- und Root-VerzeichnisZusammenfassung - Den Weg finden8Umleitung
StandardausgabeIn eine Datei überschreibenAn eine Datei anhängenStandardeingabeStandardfehlerausgabeZusammenfassung – Log-Builder3Dateien
Eine Datei erstellenEine Datei lesenEine Datei kopierenEine Datei verschieben und umbenennenEine Datei löschenZusammenfassung - Dateioperationen6Wildcards und Muster
Die Sternchen-WildcardDie Fragezeichen-WildcardKlammer-WildcardsWildcards kombinierenZusammenfassung - Selektive Operationen9Pipes
Was ist eine PipeVerkettung zweier BefehleVerkettung mehrerer BefehlePipe mit GrepZusammenfassung - Daten-Pipeline