merge stdin, stdout?

J

jonny lowe

Hi everyone,

Is there an easy way to merge stdin and stdout? For instance suppose I
have script that prompts for a number and prints the number. If you
execute this with redirection from a file say input.txt with 42 in the
file, then executing

../myscript < input.txt > output.txt

the output.txt might look like this:

Enter a number:
You entered 42.

What I want is to have an easy way to merge input.txt and the stdout
so that output.txt look like:

Enter a number: 42
You entered 42.

Here, the first 42 is of course from input.txt.

Thanks.

-jon
 
E

exarkun

Hi everyone,

Is there an easy way to merge stdin and stdout? For instance suppose I
have script that prompts for a number and prints the number. If you
execute this with redirection from a file say input.txt with 42 in the
file, then executing

./myscript < input.txt > output.txt

the output.txt might look like this:

Enter a number:
You entered 42.

What I want is to have an easy way to merge input.txt and the stdout
so that output.txt look like:

Enter a number: 42
You entered 42.

Here, the first 42 is of course from input.txt.

It sounds like you might be looking for script(1)?

Jean-Paul
 
J

jonny lowe

It sounds like you might be looking forscript(1)?

Jean-Paul

Hi Jean-Paul,

I tried it. But stdin is not merged in with stdout. Maybe I'm using
script wrongly? This is what I've done. I have a python script y.
Here's what it looks like when I run it and I entered "sss":

$ ./y
gimme x:sss
you entered sss

Now I'm going to use the script command. I'm using an input file
input.txt that contains just the string "hello".

$ script -c "./y < input.txt" output.txt
Script started, file is output.txt
gimme x:you entered hello
Script done, file is output.txt

And when I view output.txt this is what I see:

$ less output.txt
Script started on Thu Feb 4 22:28:12 2010
gimme x:you entered hello

Script done on Thu Feb 4 22:28:13 2010

As you can see the stdin is not printed. What I'd really wanted was
something like this in output.txt:

gimme x:hello
you entered hello

-jon
 
G

Gabriel Genellina

En Fri, 05 Feb 2010 17:39:07 -0300, jonny lowe
$ script -c "./y < input.txt" output.txt
Script started, file is output.txt
gimme x:you entered hello
Script done, file is output.txt

Try moving the redirection out of the command:

$ script -c ./y output.txt < input.txt
 
A

Anssi Saari

jonny lowe said:
The result is the same as before. I've tested in fedora11.

I don't think script is the answer here, since it only stores what's
displayed on a terminal and your program's input comes from a file and
is not displayed on the terminal.

Simplest solution is probably that you have your program echo every
line of input. Maybe some hairy terminal trickery could be done?
Really more of a Linux question than python.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,226
Members
46,815
Latest member
treekmostly22

Latest Threads

Top