パイプとは、入力を読み取り、同時に出力を生成するものです。たとえば、小文字で構成された入力を受け取るパイプを持つことができ、パイプは変更されます (入力の元のソースを変更せずに、データファイルなど) 入力データを大文字に変更します。
パイプは左から右に処理されます。
エコーライン | ソート | ./${1} を計算
line
にパイプされsort
ます。Sort
次に、入力データをソートしてデータを出力します。データは、calculate
何らかの入力を期待しているプロセスにパイプされます。
これを次のように視覚化する方が簡単かもしれません。チューブまたはプラスチック パイプ (雨どいの種類) と考えてください。
入力 <---+---> 出力
| |
パイプ
編集:
元の質問で、C シェルに基づくコード スニペットを解釈するように求められたので、これ以上苦労せずに...
1. set line = ($<)
2. while(${#line} != 0)
3. if(${#line} == 5) その後
4. エコーライン | ソート | ./${1} を計算
5.エンディフ
6. set line = ($<)
7.終了
- 標準入力またはファイルから入力を受け取ります (これは、「this_script < data file」または「cat data_file | this_script」を実行して、ファイルをこのスクリプトにリダイレクトすることで実行できます。
- EOF に到達するまでループして読み取ります (Unix/Linux バリアントでは Ctrl+D、Windows では F6 キー)
- 行数が 5 行、つまり最初の 5 行に達した場合、それは私を悩ませている部分であり、100% の自信はありませんが、さらに説明を続けます..
- 5行はエコーされて出力されますが、パイプのため、出力はソートへの入力になり、ソートはその入力から読み取り、データをソートして出力しますが、さらに別のパイプのために、 calculate は、ソートされた出力から入力を受け取ります。
line
より多くの入力を含むように変数を設定します。そして再びループします。
そして、あなたのコメントに答えるために、必要に応じてパイプを追加できます。次のように 4 行目を強調表示します。
エコーライン | ソート | ユニーク | ./${1} を計算
ちなみに、私の記憶が正しければ、そうline
すべきだと思います。$line