5

パイプ入力で 2 つのコマンドを実行し、両方の出力を (標準出力に) 出力したいと考えています。

各コマンドは、grep、sed、および awk の組み合わせです。

これらのコマンドは両方とも、単一の .sh ファイルに存在する必要があります。

サンプル コマンド:

cat mult_comm.sh       
sed 's/World/Boy/g'|grep Boy ; grep World

# Input
cat input.log
Hello World

# This command HAS to work EXACTLY like this
cat input.log | bash mult_comm.sh

期待される出力

Hello Boy
Hello World

実際の出力

Hello Boy

ティーを使ってみた

cat mult_comm.sh
tee >(sed 's/World/Boy/g'|grep Boy) | grep World

しかし、これは

Hello World

必要に応じて .sh ファイルを変更できますが、パイプされたコマンドは変更できません。何か案は?

これはOS X / Linuxに似ています: 2 つのプロセスにパイプしますか? 出力を2つの異なるコマンドにパイプしますが、スクリプト内で名前付きパイプを使用する方法がわかりません。

4

2 に答える 2

1

使用できますpee(1)– Debian/Ubuntu では、パッケージで利用できますmoreutils

あなたの例の使用法、魔法のリダイレクトよりもやや読みやすい

echo Hello World | pee 'grep World' 'sed "s/World/Boy/" | grep Boy'
于 2013-08-01T10:33:42.750 に答える