Using tee causing need for extra newlines.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Using tee causing need for extra newlines.
# 1  
Old 08-26-2011
Using tee causing need for extra newlines.

I am working on capturing lines of output from a korn script that is used to import optical disks into a jukebox. The script is running on Solaris 8. Insertdiscs calls the binary named vimport which starts up and prompts for a disk to be inserted. I am able to capture output with this line below which would be perfect except that as soon as insertdiscs is piped to tee (as opposed to running it alone) I need to hit enter twice to get it to start vimport (see below) for each loop.

Code:
#!/bin/bash
#In Solaris 8 only bash handles the below process substitution properly.
 insertdiscs | tee >(egrep Imported\|INFO >> /tmp/importdisclog.txt)

I have tried
Code:
printf "\n" | insertdiscs | tee >(egrep Imported\|INFO >> /tmp/importdisclog.txt)

as well as piping from echo "\n" and all that gets me is infinite new lines at every prompt from the interactive vimport script.


This is the insertdiscs script that is called from my code above:
Code:
#!/bin/ksh
while [ $TRUE ]
do
  vimport -j 1
  rc=$?
  if [ $rc -eq 0 ]; then
    log_message "G" "Volume import succeeded for jukebox using insertdiscs."
  else
    log_message "B" "Volume import failed for jukebox using insertdiscs."
  fi
done

Any help appreciated.
Thanks,
Brett
# 2  
Old 08-30-2011
The shells do no seem to support this very well.
Normally I would do this kind of tasks with expect.
My experience is that one has to mimic the time behavior of the program that
expects something from standard input.
You may try replacing the simple printf by this subshell expression:
Code:
(sleep 1; printf "\n")


Last edited by hfreyer; 08-30-2011 at 01:23 PM..
# 3  
Old 08-31-2011
Thanks hfreyer. I don't think I described the problem very well. Basically my insertdiscs script calls the vimport binary in a loop which is always running in a terminal. vimport is an interactive program that prompts to insert magnetic optical disks in a jukebox one at a time (enter slot number or hit enter at prompts for next available jukebox slot). The screen output for vimport has information that I need to also capture to a file (egrep Imported\|INFO). So in order to still see the interactive text from vimport to load disks and also capture parts of the output to file for processing I can start the script with:
Code:
insertdiscs | tee >(egrep Imported\|INFO >> /tmp/importdisclog.txt)

Except now I have to hit enter an extra time to get back to the beginning of the loop running vimport. Piping to tee adds the need for an extra enter key press. So I was hoping to somehow automatically add one enter key press or for some other solution. Otherwise the script always looks like it has hung when in fact it is ready to insert the next disk (after hitting enter an extra time to see the "please insert disk" prompt again).
Piping from print "\n" or (sleep 1; print "\n") sends too many newlines, I was hoping for some way to just send one if possible. Unfortunately the system is an old Sun box running Sun 5.8 so no expect.
# 4  
Old 10-14-2011
Help please

After working on this issue for over a month. It looks the interactive vimport binary I am making a wrapper script for is using print -n or some equivalent to suppress new-lines in it's output so that user input appears on the same line. This is causing the need to type extra new lines and screwing up the flow of my script when piping the output to tee. Someone must have experienced this before. Any solutions?

Thanks
Brett
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

UNIX file with Newlines

Hi Friends, I have a data file with new lines. How to remove the newlines and should be showed in one line. I tried using the command tr -d '\n' filename sed 's/\n//g' file name Ex: 1 abc hyd is actual record but in our scenario showing it as 1 abc hydthis record should be like... (5 Replies)
Discussion started by: victory
5 Replies

2. Shell Programming and Scripting

Mindboggling difference between using "tee" and "/usr/bin/tee" in bash

I'm on Ubuntu 14.04 and I manually updated my coreutils so that "tee" is now on version 8.27 I was running a script using bash where there is some write to pipe error at some point causing the tee command to exit abruptly while the script continues to run. The newer version of tee seems to prevent... (2 Replies)
Discussion started by: stompadon
2 Replies

3. Shell Programming and Scripting

File formatting with newlines

Hi All - I am in need of some help in formating the below file Requirement - 1) replace newlines with space 2) replace '#~# ' with newline ----------------------- sample inputfile a I|abc|abc|aaa#~# I|sddddd|tya|dfg sfd ssss#~# I|tya1|tya2|dfg|sfd|aaa#~#... (5 Replies)
Discussion started by: J1nx007
5 Replies

4. UNIX for Dummies Questions & Answers

Remove newlines

Hi buddy's my file are like this: s.no,name,band,sal 1,"suneel",,10 2,"bargav sand",,20 30," ebdug gil",,4 but i want s.no,name,band,sal 1,"suneel",,10 2,"bargav sand",,20 30,"ebdug gil",,4 any command or Shell script for this. please help me it's urgent to implement (33 Replies)
Discussion started by: Suneelbabu.etl
33 Replies

5. Shell Programming and Scripting

Replace commas with newlines

Good afternoon, I am trying to read user input. Here is what I have so far: echo "Type the Container ID for every container that you want subnets exported" echo "for (with comma between each one, for example... 1,45,98)" echo -n "if you want every one listed, then just type ALL in caps... (2 Replies)
Discussion started by: brianjb
2 Replies

6. Shell Programming and Scripting

removing newlines after a certain word.

Hello! This is my first post here. I have a file with text like: A</title> B C</title> D I need to format it to: AB CD I am trying to use sed: sed 's/<//title>\n/ /g' file > newfile to delete </title> and the newline character, but the file is unchanged because there are... (3 Replies)
Discussion started by: DaytonCPS
3 Replies

7. Shell Programming and Scripting

Ignoring newlines in my search

I have a file that has lines that are deliminated with '^A', but some of the lines go for a few lines and I need those lines to be appended into one line. All of the lines start with 'low debug' and end with ' " 0 '. How can I read each line from start to finish without some of the data... (7 Replies)
Discussion started by: ndedhia1
7 Replies

8. Shell Programming and Scripting

Remove improperly placed newlines

Hello, there. I have a file that's a horrible, horrible mess. (Basically, it's an export from a firewall config.) The people who generated the file didn't think that putting a newline in the middle of a hostname would ever be a problem. It is. Here's an example of the stuff in the file: ... (2 Replies)
Discussion started by: mikesimone
2 Replies

9. Shell Programming and Scripting

Transpose with two newlines as delimiter

Hi Guys, I have data in a file as follows: a 1 2 3 b 4 5 6 a 6 7 8 a 4 7 9 b 6 8 5 c 0 8 7 So the number of rows which have data is variable (2 for the first group, one for the second group and three for the third group), but the delimiters between the... (10 Replies)
Discussion started by: npatwardhan
10 Replies

10. Shell Programming and Scripting

Newlines in shell variables

Hello, I'm trying to create a shell variable with newlines inside it, so that when I echo the variable and pipe it to, say, awk, it output with the newlines. Why is this so problematic? I frankly don't know, but BASH seems to be stripping my variable of newlines. Here's an example $ cat... (5 Replies)
Discussion started by: narcvs
5 Replies
Login or Register to Ask a Question