Need help putting output on one line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help putting output on one line
# 8  
Old 04-27-2012
A coworker helped me getting stuff on one line, with this:

Code:
cat $UDAFILE | while read BID NET DT DV
do
   if [ $BLOCKID -ne $BID ]
   then
      if [ ! -z "$NETWORK" ]
      then
         # Report UDA data
         /bin/echo -n "-c uda,set "
         /bin/echo -n "-Tipv4_subnet "
         /bin/echo -n "-a $NETWORK "
         /bin/echo -n "-o Agency "
         /bin/echo -n "-u qipman "
         /bin/echo -n "-p qipman "
         /bin/echo -n "--uda Subnet/Block_Tech_Name=\"$BlkTechName\" "
         /bin/echo -n "--uda Subnet/Block_Admin_Name=\"$BlkAdminName\" "
         /bin/echo -n "--uda Subnet/Block_Security_Name=\"$BlkSecName\" "
         /bin/echo -n "--uda Subnet/Block_Tech_UUPIC=\"$BlkTechId\" "
         /bin/echo -n "--uda Subnet/Block_Admin_UUPIC=\"$BlkAdminId\" "
         /bin/echo -n "--uda Subnet/Block_Security_UUPIC=\"$BlkSecId\" "
         /bin/echo
      fi
      # Reset UDF data values
      BlkAdmId=""
      BlkAdmName=""
      BlkSecId=""
      BlkSecName=""
      BlkTechId=""
      BlkTechName=""
      BLOCKID=$BID
   fi
   # read and store UDF data values
   NETWORK="`echo $NET | awk -F\/ '{print $1}'`"
   if [ "$DT" = "blockAdminId" ]
   then
      BlkAdminId="$DV"
   fi
   if [ "$DT" = "blockAdminName" ]
   then
      BlkAdminName="$DV"
   fi
   if [ "$DT" = "blockSecId" ]
   then
      BlkSecId="$DV"
   fi
   if [ "$DT" = "blockSecName" ]
   then
      BlkSecName="$DV"
   fi
   if [ "$DT" = "blockTechId" ]
   then
      BlkTechId="$DV"
   fi
   if [ "$DT" = "blockTechName" ]
   then
      BlkTechName="$DV"
   fi
done

But the problem is that it prints to standard out. How can I redirect all of that to a file? I can't just run the script and then send it a file, because at the beginning of the script it needs user input to get username and password:

Code:
echo -n "Enter your MYSQL username and press [ENTER]: "
read username
#
echo -n "Enter your password and press [ENTER]: "
stty -echo
password="`head -n 1`"
stty echo
echo

Any tips on how to modify this to send all output to file?

---------- Post updated at 11:55 AM ---------- Previous update was at 11:50 AM ----------

Quote:
Originally Posted by Scrutinizer
On Solaris use /usr/xpg4/bin/awk rather than awk
I'm getting the same from Solaris as I did on Linux:
Code:
9992 10.10.50.0/24   
 blockAdminName="Username One"
 block_name="Servers"   
 blockAdminEmail="username.one@people.com"
 bockAdminPhone="312-555-1212"
 blockAdminId="1234"
 blockSecName="Username Two"
 blockSecEmail="username.two@people.com"
 blockSecPhone="312-555-2121"
 blockSecId="7891"
 blockTechName="Username Three"
 blockTechEmail="username.three@people.com"
 blockTechPhone="312-555-1313"   blockTechId="4567"

# 9  
Old 04-27-2012
To send all output into a file:
Code:
./script > filename

Or if you absolutely must do that in the script itself, have this as the first line:

Code:
exec 1>filename

# 10  
Old 04-27-2012
By the by, that's a useless use of cat. You almost never need cat to read a file, programs are perfectly capable of reading files themselves, and even if they don't take filenames you can always just redirect into them...

You can rewrite the loop more efficiently as
Code:
while read LINE
do
...
done <filename

This User Gave Thanks to Corona688 For This Post:
# 11  
Old 04-27-2012
Thank you so much Corona!

I modified my script to have this:

Code:
while
do
...
done < $UDAFILE >> $UDAFILE.test.csv

And it is doing just what I want.
# 12  
Old 04-27-2012
Perhaps I missed something, but how did we get from post#6 and #7 to #8 ?
# 13  
Old 04-27-2012
You left out
Code:
OFS=, ORS=

at the end of your awk..

Code:
/usr/xpg4/bin/awk 'p!=$1{if(p)print RS; print p=$1,$2}{for(i=5;i<=NF;i++)$4=$4 FS $i; print OFS $3 "=\"" $4 "\""} END{print RS}' OFS=, ORS= infile


Last edited by Scrutinizer; 04-27-2012 at 03:06 PM..
This User Gave Thanks to Scrutinizer For This Post:
# 14  
Old 04-27-2012
I'm sorry I did leave that off. It worked great!!!

I want to look at that awk statement piece by piece and see why it does what it does. Do you have time to explain what your awk statement does?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Get an output of lines in pattern 1st line then 10th line then 11th line then 20th line and so on.

Input file: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 (6 Replies)
Discussion started by: Sagar Singh
6 Replies

2. Shell Programming and Scripting

Identifying a sentence and putting it on a new line

I am revisiting the problem of sentence splitting. I have a Perl Script which splits a para into sentences, but acronyms and short forms create an issue #!/usr/bin/perl use feature qw/say/; use strict; use warnings; my $s; my @arr; while(<>) { chomp $_; $s .= $_ . " "; } @arr... (2 Replies)
Discussion started by: gimley
2 Replies

3. UNIX for Dummies Questions & Answers

Putting the Current -date in the Output File

Hi guys, Just want to ask how can I make a script that will perform like this. 1. Execute the command 2. Then the output of the command will be redirected to a file 2. The file that has been created will have a date on it equivalent to the date and time it was created (or maybe after the... (5 Replies)
Discussion started by: rymnd_12345
5 Replies

4. Shell Programming and Scripting

putting color on output file script

do you have any simple script on how to change the color and font of a string in a script example echo "====================================" echo " sample color script" echo "====================================" echo " hello " echo " bye" on hello,... (3 Replies)
Discussion started by: lhareigh890
3 Replies

5. Shell Programming and Scripting

Putting echo output as input to stat

I have a string with escape differentiators as a result of searching for a file using find. Essentially find returned to my shell variable several absolute paths each ending with the file name and each path/file separated by \n. Echo recognizes the escape sequence and is able to print the paths... (3 Replies)
Discussion started by: Ebodee
3 Replies

6. Shell Programming and Scripting

How to redirect the output to multiple files without putting on console

How to redirect the output to multiple files without putting on console I tried tee but it writes to STDOUT , which I do not want. Test.sh ------------------ #!/bin/ksh echo "Hello " tee -a file1 file2 ---------------------------- $>./Test.sh $> Expected output: -------------------... (2 Replies)
Discussion started by: prashant43
2 Replies

7. Shell Programming and Scripting

Putting multiple sed commands on a single line

Hi, I want to make sed write a part of fileA (first 7 lines) to file1 and the rest of fileA to file2 in a single call and single line in sed. If I do the following: sed '1,7w file1; 8,$w file2' fileA I get only one file named file1 plus all the characters following file1. If I try to use curly... (1 Reply)
Discussion started by: varelg
1 Replies

8. Shell Programming and Scripting

Putting new line after certain number of character

Hi, I want, if a line is more than 80 characters length then put a new line with 4 space after each 80 characters to indent the data at same position. Input: 200 Geoid and gravity anomaly data of conjugate regions of Bay of Bengal and Enderby Basin: New constraints on breakup and early... (3 Replies)
Discussion started by: srsahu75
3 Replies

9. Shell Programming and Scripting

Getting command output and putting into newfile

Hello All, I am using the below code: #!/bin/sh /omp/bin/TICLI "op:alarm,all" > filename for getting command output and then putting the output into newfile but the problem is this, that not the complete output goes into newfile and the script stops. for example: if this commands gives... (18 Replies)
Discussion started by: wakhan
18 Replies

10. Shell Programming and Scripting

Putting screen output in a log file

I want to output screen messages to a logfile when executing an automated script. I have tried the script and command to do this but with no luck. Thanks, Nicole (5 Replies)
Discussion started by: nsutti
5 Replies
Login or Register to Ask a Question