問題を説明するこの投稿に出くわしました。 「fooWorld」を含むfile.txtというファイルがあるとします。
Tylerが投稿した回答は多くのことを説明していますが、方法については混乱しています

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の出力はこれはgrepの入力になりますか?私は正しいですか?もしそうなら、grepには文字列としてファイルパスが必要だと思いましたか?

コメント

のmanページ(タイプman grep)には、「grep [options] PATTERN [FILE …]」と表示されます。 「FILE」の後に「…」が続くという事実は、複数のファイル引数が存在する可能性があることを意味します。角かっこ([])で囲まれているという事実は、ファイル引数がオプションであることを意味します(つまり、いずれか)。読み続けると、「 Grep が名前付き入力ファイル(または、名前が付けられていない場合は標準入力、またはファイル名 - が与えられます)…。」したがって、ファイルが指定されていない場合、grepは標準入力を検索します。

回答

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

cat file.txtはパイプ(|)を介して別のコマンドに送信され、左側のパイプに渡されたSTDOUTを介した出力がセットアップされ、次のコマンドに送られます。 「sはパイプの右側にあります」sSTDIN。

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

STDOUTに出力を送信します。

$ cat file 1 2 3 4 5 

はSTDOUT経由でgrepのSTDINにパイプ経由で送信されます。

$ cat file | grep 5 5 

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

$ grep 5 file 5 

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

$ grep 5 < <(cat file) 5 

ここで「fileのコンテンツを上記のSTDIN経由でgrepに送信できることを示しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です