I want to make a shell-pipe like this:

producer | analyser > report.txt

and watch the output of producer while it is generating data (a big log-file) for analysis.

How can I do that?

link|improve this question
feedback

1 Answer

up vote 4 down vote accepted

In /bin/sh and compatibles:

producer | tee /dev/fd/3 | (analyser > report.txt) 3>&1

I've tested this only on Linux and Cygwin. On some Unix-likes you may have to change /dev/fd/3 to whatever their equivalent is.

link|improve this answer
that will show and save the output of analyser, right? I want to see the output of producer. – Bastl Feb 10 at 12:12
sorry - better now? – reinierpost Feb 10 at 12:14
That will save producer's output to report.txt and I'd have to watch it using "tail -F". Not exactly what I wanted... – Bastl Feb 10 at 12:16
Fixed once again. I should learn to actually read stuff before replying. – reinierpost Feb 10 at 12:25
On Ubuntu, I had to use /dev/fd/2 for stdout. Thanks! – Bastl Feb 10 at 13:33
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.