bash では、複数のコマンドをチェーンして、すべて stdin から同じ入力を取得する方法はありますか? つまり、1 つのコマンドが stdin を読み取り、何らかの処理を行い、出力をファイルに書き込みます。チェーンの次のコマンドは、最初のコマンドが取得したものと同じ入力を取得します。等々。
たとえば、コンテンツをフィルタリングすることによって、大きなテキスト ファイルを複数のファイルに分割するとします。このようなもの:
cat food_expenses.txt | grep "coffee" > coffee.txt | grep "tea" > tea.txt | grep "honey cake" > cake.txt
2 番目の grep は元のテキスト ファイルではなく、最初の grep の出力を取得するため、これは明らかに機能しません。ティーを挿入しようとしましたが、役に立ちません。最初のgrepが出力ではなく入力をパイプに送信するようにするbashマジックはありますか?
ところで、ファイルの分割は簡単な例でした。ネットワーク経由で受信する連続ライブ テキスト ストリームを分割 (パターン検索によるファイリング) し、出力を別の名前付きパイプまたはソケットに書き込むことを検討してください。シェルスクリプトで簡単にできる方法があれば教えていただきたいです。
(この質問は、不明確さを指摘した回答に基づいて、私の以前の質問のクリーンアップされたバージョンです)