Help capturing and reformatting buffered and unbuffered output


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help capturing and reformatting buffered and unbuffered output
# 1  
Old 09-27-2005
Help capturing and reformatting buffered and unbuffered output

Ok, so I have a shell script which runs a specific command, and that command sends it's output to the display. At certain times, the command sends buffered output, and at other times, the command sends unbuffered output in the form of a % progress bar, so if I run the command, the output I receive is similar to this:
$ commandname
Did some internal check...done (this line is buffered)
Did something else...done (this line is buffered)
Performing task: (this line is buffered)
0....10....20....30...etc (this line is unbuffered, and sends output to the display one character at a time)

I would like to somehow capture and reformat both the buffered and unbuffered output so that I can strip out all the command's output, and replace it with my own output. Without getting too specific, what commands can you recommend to do this? What I'd like to to is for each line of buffered output, replace it with different output, or no output at all, and for the unbuffered line, either change the formatting so that when the command sends a period, it prints something else. I realize I can do some pretty detailed stuff with sed, but am honestly not that experienced with it. Can anybody give some suggestions, guidance on how to go about this? To give an example of simple reformatting of the commands output, I could have all buffered output to be sent to /dev/null, and once the unbuffered output starts, send one line stating that all internal tests passed, then start sending the unbuffered output to the display again?

Sorry if this makes no sense, but any help is appreciated.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Reformatting of an output file

Hi, i've got the following output file: 170724_1600 | SYSTEM | 449 | 282 | 167 | 62 170724_1600 | CCS_SCP_DATA | 200 | 88 | 112 | 44 170724_1600 | CCS_SCP_SUBS_I | 2001 | 1751 | 250 | 87 170724_1600 | UIS_CDR_INDEX | 2001 | 1 | 2000 | 0 170724_1600 | LCP_INDEX | 200 | 5 | 195 | 2... (4 Replies)
Discussion started by: nms
4 Replies

2. Shell Programming and Scripting

Capturing Output?

Hello All, I'm writing a Bash Script and in it I execute a piped command within a Function I wrote and I can't seem to redirect the stderr from the 1st pipe to stdout..? I'm setting the output to an Array "COMMAND_OUTPUT" and splitting on newlines using this --> "( $(...) )". By putting... (6 Replies)
Discussion started by: mrm5102
6 Replies

3. Programming

Why must flush all line-buffered output streams?

Hi, Mentioned in Stevens & Rago "Advanced Programming in the UNIX" I don't understand why must flush all line-buffered output streams when (a)an unbuffered or (b)a line-buffered stream require data from kernel? (2 Replies)
Discussion started by: Edward114
2 Replies

4. Shell Programming and Scripting

Help reformatting output

I have a command that gives me the output below: JAVA_HOME = C:/jdk1.5.0_11 Broker Performance Report for server 'app1' RMI_URL = rmis:// Parameter Kintana ItgDS DashboardDS ---------------------------- ------- ----- ----------- Connections count 41 ... (4 Replies)
Discussion started by: bwiebe
4 Replies

5. Shell Programming and Scripting

Capturing the output of dbv

Hello, We have an oracle database running on a Linux host (RHEL5)...I'm trying to run Oracle dbv (database verify utility) and capture its output to a file using the following syntax but the standart output does NOT get redirected to the file... dbv blocksize=32768 ... (2 Replies)
Discussion started by: luft
2 Replies

6. Shell Programming and Scripting

capturing output from top and format output

Hi all, I'd like to capture the output from the 'top' command to monitor my CPU and Mem utilisation.Currently my command isecho date `top -b -n1 | grep -e Cpu -e Mem` I get the output in 3 separate lines.Tue Feb 24 15:00:03 Cpu(s): 3.4% us, 8.5% sy .. .. Mem: 1011480k total, 226928k used, ....... (4 Replies)
Discussion started by: new2ss
4 Replies

7. Shell Programming and Scripting

Capturing the output from an exec command

Hi, I'm new to ksh - unix platform. I'm writing a small script which will search my current directory and will search for file names which it takes input from the users. Here is the code I'm having. 1 #!/bin/ksh 2 echo "enter a file name to be searched in the current dir : " 3 read... (1 Reply)
Discussion started by: avik
1 Replies

8. UNIX Desktop Questions & Answers

What is buffered output?

ie: man cat .... - u The output is not buffered (3 Replies)
Discussion started by: Xcislav
3 Replies

9. UNIX for Dummies Questions & Answers

Capturing output from C++ program

Hi I have a C++ program that generates a lot of log information on the console, I need this output (printed using printf function) to go to a file since I will use crontab to schedule the job. I know I can do this: myprog > myfile but I don't know how to enter this in crontab. I use... (3 Replies)
Discussion started by: GMMike
3 Replies

10. Shell Programming and Scripting

capturing output in script

I have the following line in my script: $sftpcmd $rmthost <<COMMANDS>> $sftplog 2>&1 For some reason this is not capturing the errors from sftp, they go to the file attached to the cron entry ie mm hh dd MM * /myscript > cron.out any idea why? digital unix 4.0d (6 Replies)
Discussion started by: MizzGail
6 Replies
Login or Register to Ask a Question
setbuf(3S)																setbuf(3S)

NAME
setbuf(), setvbuf(), setlinebuf() - assign buffering to a stream file SYNOPSIS
Obsolescent Interface DESCRIPTION
can be used after a stream has been opened but before it is read or written. It causes the array pointed to by buf to be used instead of an automatically allocated buffer. If buf is the NULL pointer input/output will be completely unbuffered. A constant defined in the header file, tells how big an array is needed: can be used after a stream has been opened but before it is read or written. type determines how stream is to be buffered. Legal values for type (defined in are: causes input/output to be fully buffered. causes output to be line buffered; the buffer will be flushed when a newline is written, the buffer is full, or input is requested. causes input/output to be completely unbuffered. When an output stream is unbuffered, information is queued for writing on the destination file or terminal as soon as written; when it is buffered, many characters are saved up and written as a block. When the output stream is line-buffered, each line of output is queued for writing on the destination terminal as soon as the line is completed (that is, as soon as a new-line character is written or terminal input is requested). can also be used to explicitly write the buffer. If buf is not the NULL pointer, the array it points to is used for buffering instead of an automatically allocated buffer (from size speci- fies the size of the buffer to be used. The constant in is suggested as a good buffer size. If input/output is unbuffered, buf and size are ignored. By default, output to a terminal is line buffered and all other input/output is fully buffered. is used to change stream from block-buffered or unbuffered to line-buffered. can be used any time the file descriptor is active. Obsolescent Interface assigns buffering to a stream file. DIAGNOSTICS
If an illegal value for type or size is provided, return a non-zero value. Otherwise, the value returned will be zero. Note A common source of error is allocating buffer space as an "automatic" variable in a code block, then failing to close the stream in the same block. Allocating a buffer of size or bytes does not necessarily imply that all of size or bytes are used for the buffer area. AUTHOR
and were developed by HP. SEE ALSO
flockfile(3S), fopen(3S), getc(3S), malloc(3C), putc(3S), stdio(3S), thread_safety(5), glossary(9). STANDARDS CONFORMANCE
setbuf(3S)