grepおよびsortコマンドを使用してソートするにはどうすればよいですか?


14

ファイル/etc/servicesで見つかったすべてのTCPサービスのソートされたリストを作成し、コマンドの出力をコマンドgrep tcp /etc/servicessortパイプし、このパイプの出力をファイルにリダイレクトしたいです~/pipelab.txt

出力が間違っているというエラーメッセージが引き続き表示されますが、その理由はわかりません。

これは私が最後に試したものです:

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

回答:


11

> ~/pipelab.txt明らかにパイプラインオペレータの同じ側のコマンドに属し|ます。つまり、grep出力をパイプするのではなく、ファイルにリダイレクトしますsort

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

21

あなたは、両方のリダイレクトへの出力しようとしているgrepファイルへ、それはへのパイプをsort。あなたはそれをすることはできません、少なくともそのように。

代わりに、ソートするためにフィードを送りたいだけです。

grep tcp /etc/services | sort

そして、ソートされた出力(つまり、ソートされていないもの)をファイルにリダイレクトしたいので、ソート後にリダイレクトを配置します。

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

コマンドの出力先を変更することにより、パイプとリダイレクトの両方が機能します。そのうちの2つがgrep(から最終的にリダイレクトが勝ち、ソートされていない出力をファイルに書き込みました)出力を巡って争っています。


どうもありがとう、sortコマンドをどこでも使える限りそれが機能するだろうと思った。
user72510 14年

1
@ user72510パイプラインは、左から右の順に処理されます。これは実際に便利です。たとえば、ソートされた出力の最初の5行が必要な場合は、できますgrep tcp /etc/services | sort | head -n 5。重要なのは、のsort前に行うheadことです。そうしないと、必要な行が得られません。
デロバート14年

説明してくれてありがとう。オンラインで授業を受けているので、自分で教えています。それに加えて、私は40歳だということは学習が遅いです。
user72510 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.