grep コマンドと sort コマンドを使用して並べ替えるにはどうすればよいでしょうか?

grep コマンドと sort コマンドを使用して並べ替えるにはどうすればよいでしょうか?

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

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

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

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

答え1

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

代わりに、並べ替えるためにデータを入力するだけです。

grep tcp /etc/services | sort

そして、リダイレクトしたいソート出力 (つまり、ソートから出てくるもの) をファイルに書き込むため、リダイレクトをソートの後に置きます。

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

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

答え2

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

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

関連情報