Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I append onto pipes?

Tags:

bash

pipe

So my question is if I can somehow send data to my program and then send the same data AND its result to another program without having to create a temporary file (in my case ouputdata.txt). Preferably using linux pipes/bash.

I currently do the following:

cat inputdata.txt | ./MyProg > outputdata.txt

cat inputdata.txt outputdata.txt | ./MyProg2

like image 233
Daniel O Avatar asked Dec 01 '08 15:12

Daniel O


2 Answers

Here is another way, which can be extended to put the output of two programs together:

( Prog1; Prog2; Prog3; ...  ) | ProgN

That at least works in Bash.

like image 86
derobert Avatar answered Sep 22 '22 12:09

derobert


Choice 1 - fix MyProg to write the merged output from the input and it's own output. Then you can do this.

./MyProg <inputdata.txt | ./MyProg2

Choice 2 - If you can't fix MyProg to write both input and output, you need to merge.

./MyProg <inputdata.txt | cat inputdata.txt - | ./MyProg2
like image 28
S.Lott Avatar answered Sep 26 '22 12:09

S.Lott