Another method for this snippet


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Another method for this snippet
# 1  
Old 08-07-2013
Another method for this snippet

Hi All, i believe this is not very efficient. another method would be appreciated for these. basically i read a file with tab delimited column and pass the column to another perl script.

Code:
while read line
do
        timestamp=`echo "$line"|awk -F"\t" '{print $1}'`
        severity=`echo "$line"|awk -F"\t" '{print $2}'`
        server=`echo "$line"|awk -F"\t" '{print $5}'`
        message=`echo "$line"|awk -F"\t" '{print $4,$8}'`

        converter.pl -r MS_OVO_PROXY -c "$severity" -t T -i ORA_PERF_ALERT -h "$server" -e ORA -m "$messsage"

done < /opt/application.log

exit 0

# 2  
Old 08-07-2013
Code:
while read TIME SEV x MESS1 SERV x x MESS2 junk; do
  converter.pl -r MS_OVO_PROXY -c "$SEV" -t T -i ORA_PERF_ALERT -h "$SERV" -e ORA -m "$MESS1 $MESS2"
done < file

This User Gave Thanks to Scott For This Post:
# 3  
Old 08-07-2013
May I suggest that the awk is massive overkill. If you are happy with a while read line loop, then try:-
Code:
while read timestamp severity x1 msg1 server x2 x3 msg2 rest
do
   message="$msg1 $msg2"
   converter.pl -r MS_OVO_PROXY -c "$severity" -t T -i ORA_PERF_ALERT -h "$server" -e ORA -m "$messsage"

done < /opt/application.log

Values x1, x2 & x3 are just placeholders. Variable rest captures everything from position 9 onwards (to leave msg2 as position 8)



I hope that this helps.


Robin
Liverpool/Blackburn
UK
This User Gave Thanks to rbatte1 For This Post:
# 4  
Old 08-07-2013
thanks for the suggestion, yeah thought so, is there an alternative using all using awk? i forgot to mention that the column exceeds $9 it reaches around 19 columns

i can get the column using below but i dont know how to pass it to converter.perl.

Code:
awk '{split($0,s,"\t");print "server:"s[5],"date:"s[1],"serverity:"s[2]}' /opt/application.log

# 5  
Old 08-07-2013
Why would you want to use awk?

There's a number of ways. Such as:

Code:
awk '{print "converter.pl -r MS_OVO_PROXY -c \"" $2 "\" -t T -i ORA_PERF_ALERT -h  \"" $5 "\" -e ORA -m \""$4,$8 "\""}' file | sh

(without | sh for testing...)
Code:
$ cat file
A1 A2 A3 A4 A5 A6 A7 A8 J1
B1 B2 B3 B4 B5 B6 B7 B8 J2

$ awk '{print "converter.pl -r MS_OVO_PROXY -c \"" $2 "\" -t T -i ORA_PERF_ALERT -h  \"" $5 "\" -e ORA -m \""$4,$8 "\""}' file
converter.pl -r MS_OVO_PROXY -c "A2" -t T -i ORA_PERF_ALERT -h  "A5" -e ORA -m "A4 A8"
converter.pl -r MS_OVO_PROXY -c "B2" -t T -i ORA_PERF_ALERT -h  "B5" -e ORA -m "B4 B8"

But stick with the while-loop. It's cleaner, and just as efficient.
This User Gave Thanks to Scott For This Post:
# 6  
Old 08-07-2013
looks like while loop is much efficient in this case. im actually learning awk so im figuring out how to do this via awk but i guess i should stick to while loop in this case then. thanks Smilie

---------- Post updated at 06:29 PM ---------- Previous update was at 06:20 PM ----------

The tab delimiter was ignored, it opted to use space delimiter instead via while loop

Code:
[oracle@server logs]$ while read timestamp severity XA MSG1 SERVER XB XC MSG2;do
>         message="$MSG1 $MSG2"
> echo "$timestamp"
> done < /opt/application.log
2013/08/07
2013/08/07
2013/08/07
2013/08/07
2013/08/07
2013/08/07
2013/08/07
2013/08/07
2013/08/07
2013/08/07
2013/08/07
2013/08/07
2013/08/07
[oracle@server logs]$
[oracle@server logs]$ awk -F"\t" '{print $1}' /opt/application.log
2013/08/07 04:48:36:685
2013/08/07 04:48:36:685
2013/08/07 04:53:36:514
2013/08/07 04:55:16:505
2013/08/07 05:07:36:505
2013/08/07 05:07:36:505
2013/08/07 05:07:36:505
2013/08/07 05:07:36:505
2013/08/07 05:07:36:505
2013/08/07 05:07:36:505
2013/08/07 05:07:36:505
2013/08/07 05:07:38:403
2013/08/07 05:07:38:642
[oracle@server logs]$

# 7  
Old 08-07-2013
If your delimiters are tabs and spaces, you shouldn't need to specify it.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Syntax error in code snippet

Hello, I am attaching a code snippet. Some of the variables are set in earlier code like count, arrays harr1, harr2, barr1 and barr2. The code below gives syntax errors. I am very new to Bash. for (( i=0; i<=$(( $count -1 )); i++ )) do #Now read the element at barr2 location i. Also find... (2 Replies)
Discussion started by: ngabrani
2 Replies

2. UNIX for Dummies Questions & Answers

What is this perl snippet is doing?

perl -e '@stat=stat("/etc/passwd");$now_string=localtime($stat);print $ARGV.":$now_string\n"' ./file_name Please if anyone can describe it. Thanks in advance (1 Reply)
Discussion started by: ezee
1 Replies

3. Solaris

svc:/network/physical:default: Method "/lib/svc/method/net-physical" failed with exit status 96. [ n

After a memory upgrade all network interfaces are misconfigued. How do i resolve this issue. Below are some out puts.thanks. ifconfig: plumb: SIOCLIFADDIF: eg000g0:2: no such interface # ifconfig eg1000g0:2 plumb ifconfig: plumb: SIOCLIFADDIF: eg1000g0:2: no such interface # ifconfig... (2 Replies)
Discussion started by: andersonedouard
2 Replies

4. UNIX for Dummies Questions & Answers

Script required to truncate all the lines except a specific snippet.

Hi, I have a file with the following structure. XXXXX........... YYYYY........... ................. .................. ZZZZZZ...... qwerty_start.............. .................. ................. .................. querty_end................ .............................. (3 Replies)
Discussion started by: abinash
3 Replies

5. Shell Programming and Scripting

Script required to extract a specific snippet from the entire file.

Hi, I have a file with the following structure. XXXXX........... YYYYY........... ................. .................. ZZZZZZ...... qwerty_start.............. .................. ................. .................. querty_end................ .............................. (1 Reply)
Discussion started by: abinash
1 Replies

6. UNIX for Dummies Questions & Answers

Code snippet for signals

Hi. This is code snipped I have. I am trying to play with signals... int main(int argc, char *argv) { int i; sigset_t s; //declare set of signals sigfillset(&s); //initializes the signal set to include all of the defined signals int j; for ( i = 0 ; i < 70 ; i++){ j... (6 Replies)
Discussion started by: joker40
6 Replies

7. Shell Programming and Scripting

Bash snippet to find files based on a text file?

Evening all. I'm having a terrible time with a script I've been working on for a few days now... Say I have a text file named top10song.tm2, with the following in it: kernkraft 400 Imagine i kissed a girl Thriller animals hallelujah paint it black psychosocial Oi to the world... (14 Replies)
Discussion started by: DJ Charlie
14 Replies

8. Shell Programming and Scripting

gui text box code snippet?

Hello, I have written some scripts that query the user and waits for keyboard input for an answer. I was wondering if there is any generic code snippets out there that would allow me to run this as a GUI. I am thinking of a simple dialogue box that would display the question and have a text... (1 Reply)
Discussion started by: Allasso
1 Replies

9. Shell Programming and Scripting

Can someone help translate this snippet?

Hello all - This snippet from a script runs on a Tru64 machine (ksh). if ps -ef | grep thing1 | grep dtsession | grep -v grep then echo "Killing Thing1 desktop session" kill -9 'ps -ef | grep thing1 | grep dtsession | grep -v grep | awk '{FS = " "}{print $2}'' fi I'm... (7 Replies)
Discussion started by: Heron
7 Replies
Login or Register to Ask a Question