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
user72510
quelle

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
Hauke ​​Laging
quelle
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).

derobert
quelle
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