私は遭遇しました this 私の問題を説明する投稿。 「foo World」を含むfile.txt
というファイルがあるとします。
タイラーによって投稿された回答は多くを説明していますが、私はどのように混乱しています
cat file.txt | grep "foo"
と類似しています
grep "foo" file.txt
grep
には次のものが必要だと思いました
grep input argument // input is the string to search for (i.e) foo and
// argument is the file path (./file.txt)
これでcat file.txt
の出力はfoo World
であるファイルの内容になり、これがgrep
?の入力になります。私は正しいですか?もしそうなら、grep
は文字列としてファイルパスを必要とすると思いましたか?
ほとんどのコマンドは、入力用に開く必要があるファイル、またはSTDINを介してコマンドに渡されるデータのストリームとしての入力を処理できます。
cat file.txt
の内容がパイプ(|
)を介して別のコマンドに送信されると、左側のパイプに渡されるSTDOUTを介した出力がセットアップされ、右側のコマンドに送られます。パイプのSTDINの。
コンテンツがSTDOUT-> STDINを介してパイプ経由で渡されていない場合、コマンドは、コマンドライン引数を介して名前で渡されたファイルを開くことによってデータを受信できます。
出力をSTDOUTに送信します。
$ cat file
1
2
3
4
5
cat file
からの出力は、STDOUTを介して、パイプを介してgrep
のSTDINに送信されます。
$ cat file | grep 5
5
ファイルをコマンドライン引数として処理します。
$ grep 5 file
5
STDINを介してファイルの内容を直接処理します。
$ grep 5 < <(cat file)
5
ここでは、file
の内容を上記のSTDINを介してgrep
に送信できることを示しています。