Wie sortiere ich mit den Befehlen grep und sort?


14

Ich möchte eine sortierte Liste aller in der Datei gefundenen TCP-Dienste erstellen /etc/services, die Ausgabe des Befehls grep tcp /etc/servicesin den Befehl sortleiten und dann die Ausgabe dieser Pipe in die Datei umleiten ~/pipelab.txt.

Ich erhalte immer wieder die Fehlermeldung, dass meine Ausgabe falsch ist, und ich weiß nicht warum.

Folgendes habe ich zuletzt versucht:

grep tcp /etc/services > ~/pipelab.txt | sort

Antworten:


11

> ~/pipelab.txtgehört offensichtlich zum Befehl auf derselben Seite des Pipeline-Operators |. Dh Sie leiten die grepAusgabe in die Datei um, anstatt sie weiterzuleiten in sort:

grep tcp /etc/services | sort > ~/pipelab.txt

21

Sie versuchen, die Ausgabe von grepin eine Datei umzuleiten und an diese weiterzuleiten sort. Das kannst du nicht, zumindest nicht so.

Stattdessen möchten Sie es wirklich nur füttern, um Folgendes zu sortieren:

grep tcp /etc/services | sort

und dann möchten Sie die sortierte Ausgabe (dh was kommt aus der Sortierung) in eine Datei umleiten, so dass Sie die Umleitung nach der Sortierung setzen:

grep tcp /etc/services | sort > ~/pipelab.txt

Sowohl Pipes als auch Redirects ändern die Ausgabe des Befehls. Sie haben zwei von ihnen um die Ausgabe von gekämpft grep(und letztendlich hat die Umleitung gewonnen und die unsortierte Ausgabe in Ihre Datei geschrieben).


Vielen Dank, dachte ich, solange ich den Sortierbefehl an einer beliebigen Stelle einfügte, würde er immer noch funktionieren.
user72510

1
@ user72510 Pipelines werden in der Reihenfolge von links nach rechts verarbeitet. Das ist tatsächlich nützlich, wenn Sie beispielsweise die ersten fünf Zeilen der sortierten Ausgabe verwenden möchten, können Sie dies tun grep tcp /etc/services | sort | head -n 5. Es ist wichtig, sortdass Sie vor dem fertig sind, sonst erhalten headSie nicht die Zeilen, die Sie möchten.
Derobert

Vielen Dank für die Erklärung. Ich nehme den Kurs online und unterrichte mich selbst. Hinzu kommt, dass ich 40 bin und langsam lerne.
user72510
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.