[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

processing data from stdin

From: Mike Miller
Subject: processing data from stdin
Date: Tue, 8 Jun 2004 19:10:12 -0500 (CDT)

Just thought I'd share something. I was going to submit a question, but then I figured out the answer on my own, so I'll just submit an answer. ;-)

I have a process that sends a space-delimited matrix to stdout. I want octave to grab that matrix, do some operations on it, and send output to stdout. Here is an example process that produces an N-by-3 matrix.

egrep -h '^[0-9]' file*.txt | gawk '{print $1" "$2" "$3}'

I want to perform an operation such as "mean" on that matrix. I'm using tcsh shell and I came up with this solution:

( echo 'X= [' ; \
egrep -h '^[0-9]' file*.txt | gawk '{print $1" "$2" "$3}' ; \
echo '];' ; echo 'disp(mean(X))' ) | octave -q

It works from the command line, or in a script. The initial and final parentheses hold stdout in a subshell so that commands separated by semi-colons produce only a single stdout. Without the "octave -q" on the end, you would see something like this:

X= [
1 1 1
1 0 1

That is piped to Octave and a single row vector is sent by Octave to stdout. It's pretty neat, thanks to Octave!


Michael B. Miller, Ph.D.
Assistant Professor
Division of Epidemiology
and Institute of Human Genetics
University of Minnesota

Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:
How to fund new projects:
Subscription information:

reply via email to

[Prev in Thread] Current Thread [Next in Thread]