Wie sortiere ich mit den Befehlen „grep“ und „sort“?

Wie sortiere ich mit den Befehlen „grep“ und „sort“?

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 weiterleiten sortund dann die Ausgabe dieser Pipe in die Datei umleiten ~/pipelab.txt.

Ich erhalte ständig die Fehlermeldung, dass meine Ausgabe falsch ist, und ich weiß nicht, warum.

Das habe ich zuletzt versucht:

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

Antwort1

grepSie versuchen, die Ausgabe in eine Datei umzuleitenUndLeiten Sie es weiter an sort. Das können Sie nicht tun, zumindest nicht auf diese Weise.

Stattdessen möchten Sie es wirklich nur zum Sortieren füttern:

grep tcp /etc/services | sort

und dann möchten Sie diesortiertdie Ausgabe (also das, was aus dem Sortiervorgang herauskommt) in eine Datei, sodass Sie die Umleitung nach dem Sortieren einfügen:

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

Sowohl Pipes als auch Umleitungen funktionieren, indem sie ändern, wohin die Ausgabe des Befehls geht. Sie hatten zwei davon, die um die Ausgabe stritten grep(und letztendlich gewann die Umleitung und schrieb die unsortierte Ausgabe in Ihre Datei).

Antwort2

> ~/pipelab.txtgehört offensichtlich zum Befehl auf derselben Seite wie der Pipeline-Operator |. D. h. Sie leiten die grepAusgabe in die Datei um, anstatt sie weiterzuleiten an sort:

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

verwandte Informationen