Linuxのgrepとパイプの理解

Linuxのgrepとパイプの理解

私は偶然会ったこれ投稿で私の問題を説明しました。 「foo World」というファイルがあるとしますfile.txt
Taylorが投稿した回答は多くのことを説明していますが、どうすればいいのか混乱しています。

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 Worldgrep私は正しいですか?それでは、grepファイルパスが文字列として必要であると仮定しますか?

答え1

ほとんどのコマンドは、入力用に開く必要があるファイル、またはSTDINを介してコマンドに渡されるデータストリームである入力を処理できます。

内容がcat file.txt別のコマンドでパイプ()されると、|左側のSTDOUTパイプに渡された出力が設定され、コマンドの右側のSTDINパイプに供給されます。

コンテンツがSTDOUT - > STDINを介してパイプされていない場合、コマンドはコマンドライン引数を介して名前で渡されたファイルを開いてデータを受信できます。

はい

出力をSTDOUTに送信します。

$ cat file 
1
2
3
4
5

fromの出力はcat fileSTDOUTを介してSTDINにパイプされます。grep

$ cat file | grep 5
5

ファイルをコマンドライン引数として扱います。

$ grep 5 file 
5

STDINを介してファイルの内容を直接処理します。

$ grep 5 < <(cat file)
5

fileここでは、上記のSTDINを介して何を渡すことができるかを示します。grep

関連情報