Visit The New, Modern Unix Linux Community


Efficient rewrite of code?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Efficient rewrite of code?
# 1  
Efficient rewrite of code?

Code:
egrep -v "#" ${SERVERS} | while read shosts
                        do
                                grep -Pi "[a-z]|[A-Z]" ${LOGFILE} | egrep "${snhosts}" | egrep "NOTIFICATION:" | awk -F";" '{print $3}' | sort -n | uniq | while read CEXIST
                                do
                                        if [ "$CEXIST" = "$rcheckname" ] ; then
                                                echo "$CEXIST"
                                        fi
                                done
                        done

is there a better way to rewrite the above code? im guessing there's some awk magic out there that could work here?
# 2  
You need show us some samples on log file:

Code:
LOGFILE

# 3  
LOGFILE is just a file with a list of hostnames, such as

Code:
skysmart-01.net
skysmart-02.net
#skysmart-03.net
skysmart-04.net
skysmart-05.net
skysmart-06.net

# 4  
Presumably you mean that is content of the $SERVERS file? What is in the log files and what is in variable $rcheckname?
# 5  
Quote:
Originally Posted by Scrutinizer
Presumably you mean that is content of the $SERVERS file? What is in the log files and what is in variable $rcheckname?
correct. my fault.

the log file contains hundreds of lines similar to:

Code:
[1356910980] SERVICE NOTIFICATION: AppEngAlerts;skysmart-01.net;PORT_5000_CHECK;CRITICAL;notify-by-email;CRITICAL

rcheckname is the name of a check. in this case, it would be PORT_5000_CHECK.

so, the if statement verifies the checkname found matches the one on record.

Last edited by Scrutinizer; 01-01-2013 at 02:54 AM.. Reason: removed code tags
# 6  
Not sure what you want to achieve. Inferring from pieces of info spread over the posts here and there, you want to check a log file against a list of servers to see if a certain check has been performed, and then output the check's name? You can do that like this:
Code:
$ grep -f servers $LOGFILE| grep "NOTIFICATION:.*$rcheckname" > /dev/null && echo $rcheckname 
PORT_5000_CHECK

Depending on the grep version the commented out server line might not be ignored in the search. What be the contents of ${snhosts}?

Last edited by RudiC; 01-01-2013 at 12:31 PM.. Reason: made a sentence more clear (tried to...)
# 7  
Or in bash or ksh93:
Code:
grep -f <(sed "/#/d; s/.*/NOTIFICATION.*;&;$rcheckname/" "$SERVERS") "$LOGFILE" |
cut -d\; -f2,3 | sort -u | cut -d\; -f2

awk:
Code:
awk '
NR==FNR && !/#/{
  S[$1]
  next
} 
$2 in S && $0~pat && !O[$2]++{
  print $3
}
' pat="NOTIFICATION.*$rcheckname" "$SERVERS" FS=\; "$LOGFILE"


Last edited by Scrutinizer; 01-01-2013 at 10:41 AM..
This User Gave Thanks to Scrutinizer For This Post:

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #298
Difficulty: Easy
Linux Mint actively develops software for its operating system. Most of the development is done in Javascript and the source code is available on GitHub.
True or False?

10 More Discussions You Might Find Interesting

1. Linux

Rewrite proxypass

Hi, I have a Apache 2.0 web server. When a users comes in to sitea.com a check is applied if the path ends with *t*, the user hits a rewrite rule that adds an environment variable called x is hit with a proxypass. This has worked successfully in the past, but recently I added another rewrite... (0 Replies)
Discussion started by: 3junior
0 Replies

2. Shell Programming and Scripting

Efficient shell script code

Hi all, I am working on an extremely large collection of text data (about 2 million XML files) in a directory. I have changed the extension from .xml to .dat. Right now I am using this code to remove the XML tags, but the code is way too slow. It seems that it is taking fore-ever: #ls -1 *.dat... (1 Reply)
Discussion started by: shoaibjameel123
1 Replies

3. UNIX for Advanced & Expert Users

Sendmail Rewrite Ruleset

Hi all, I like to write a rule which do the following: INPUT ADDRESS REWRITTEN TO ----------------------------- ----------------------------- foo.bar@sub.domain.com bar@domain.com foo@othersub.domain.com ... (1 Reply)
Discussion started by: bashily
1 Replies

4. Programming

Help with make this Fortran code more efficient (in HPC manner)

Hi there, I had run into some fortran code to modify. Obviously, it was written without thinking of high performance computing and not parallelized... Now I would like to make the code "on track" and parallel. After a whole afternoon thinking, I still cannot find where to start. Can any one... (3 Replies)
Discussion started by: P_E_M_Lee
3 Replies

5. Web Development

Need help with rewrite rule

Hi, I hosted my site on Apache web server. I wanted to redirect all the users request to a HTML page(maintenance page). I used the below rewrite rule to do ths same. RewriteEngine on RewriteRule .* /maintenance.html The maintenance.html page contains an image. When ever I try to... (2 Replies)
Discussion started by: BSrikanthB
2 Replies

6. Programming

Making FORTRAN code more efficient

Hi, I have a very large, very old FORTRAN code that I work with. The code is quite messy and I was wondering if I can speed up execution time by finding subroutines that code execution spends the most time in. Is there any kind of software I can use to see where the code spends most of the... (1 Reply)
Discussion started by: rks171
1 Replies

7. UNIX for Dummies Questions & Answers

rewrite date

I'm looking to have function that takes the present month and rewrites it into this form: _06_ (june), _09_ (september), and so on.. I would like this to be a my $this_month=code that rewrites date function because I would like to be a able to call it multiple times in the script by writing... (5 Replies)
Discussion started by: marringi
5 Replies

8. Shell Programming and Scripting

grep help, how do i rewrite this

Thanks , franklin you method worked, i knew i had to use a while loop and getline in there just didnt know the proper order :) Hi everyone, im trying to make the following command line shorter by introducing a script that join up all the grep commands ./new1a < numbers.txt | grep -i -v '^a '... (5 Replies)
Discussion started by: weezybaby
5 Replies

9. Shell Programming and Scripting

How do I rewrite to use a while instead of find?

for FILE in `find /home/Upload/*` Need to use a while instead to prevent errors when the file is emptied (4 Replies)
Discussion started by: goodmis
4 Replies

10. UNIX for Advanced & Expert Users

Apache Rewrite help!

I am trying to write RewriteRule on Apache_1.3.26 to get users web page from another server. for example if users tries to get web page on www.somedomain.com/~usersname it will get the web page from www.testdomain.com/~username without redirect and users will not be aware of any redirect... (1 Reply)
Discussion started by: hassan2
1 Replies

Featured Tech Videos