次のコマンドを比較してみてください。
cat f.txt | grep "someText"
grep "someText" f.txt
彼らはすべて動作するようです。ただし、catに関する文書によると、catはファイル名の代わりにファイルの内容を出力し、grepコマンドはファイルの内容の代わりにファイル名を使用します(間違っている場合は訂正してください)。それでは、最初のコマンドはなぜ実行されますか? grepはファイル名の代わりにファイルの内容を提供するので動作します。
もう一つの質問:両方が機能しますが、なぜ2番目の代わりに最初の行を使用するのですか?最初の行は重複していますか?
ベストアンサー1
最初の例では
cat f.txt | grep "someText"
grep
インポートするファイル名パラメータはなく、検索する文字列のみがあります。この場合、grep
検索するテキストを標準入力から読み込みます。この場合、標準入力はの出力からパイプされますcat f.txt
。出力ファイルの内容ファイル名ではありません。次のようにして標準入力からデータを読み取る
こともできます。grep
< f.txt grep "someText"
それ自体を使用するcat
ことは通常重複し(無関係)、grep
上記の入力リダイレクトに置き換えることができます。入力を前処理する必要がある場合を除き、常に例では2番目の形式を使用します。