Help in printing n number of lines if a search string matches in a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help in printing n number of lines if a search string matches in a file
# 1  
Old 04-02-2013
Help in printing n number of lines if a search string matches in a file

Hi
I have below script which is used to grep specific errors and if error string matches send an email alert.
Script is working fine , however , i wish to print next 10 lines of the string match to get the details of error in the email alert

Current code:-

Code:
#!/bin/bash
tail -Fn0 --retry /tmp/error.log | \
while read line ; do
        echo "$line" | egrep "java.lang.NullPointerException|java.lang.IllegalStateException|java.sql.SQLException"
        if [[ $? = 0 ]] ;
        then
HOSTNAME=abc.com
               SUBJECT="Error in "$HOSTNAME" Reported"
MESSAGE="/tmp/message.txt"
               TO="name@xyz.com"
echo "$line" > $MESSAGE
                /bin/mail -s "$SUBJECT" "$TO" < $MESSAGE
fi
done

Appreciate any inputs.
I wish to keep the changes to code as minimal as possible.

Last edited by Scrutinizer; 04-02-2013 at 03:39 PM.. Reason: code tags
# 2  
Old 04-02-2013
Please use code tags as required by forum rules!

One option, just dreamed up from the blue sky: Set up a counter, after the read, incremented by 0 until your grep matches. Then, increment by 1 and collect $line into the message file. When the counter hits 10, send the mail, reset increment to 0, clear the file, and continue.
Or, do the entire thing in e.g. awk.

BTW, you can take all the variable assignments out of the loop as it seems they remain constant.
# 3  
Old 04-03-2013
Don't do it in real time. Don't use tail -f which seems to me the problem.

Once an hour, or whatever, use tail to save the end part of the log file that has not been examined before. Save the end part to "tail.txt" for example. Use grep -C on tail.txt to get the context for each error line detected. Record total number of lines in the log file. Suppose there are 1000. Next time (in an hour), tail starts with line 1001 (or maybe 991 to make sure you have context).
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace all string matches in file with unique random number

Hello Take this file... Test01 Ref test Version 01 Test02 Ref test Version 02 Test66 Ref test Version 66 Test99 Ref test Version 99 I want to substitute every occurrence of Test{2} with a unique random number, so for example, if I was using sed, substitution would be something... (1 Reply)
Discussion started by: funkman
1 Replies

2. Shell Programming and Scripting

Required 3 lines above the file and below file when string matches

i had requirement like i need to get "error" line of above 3 and below 3 from a file .I tried with the below script.But it's not working. y='grep -n -i error /home/file.txt|cut -c1' echo $y head -$y /home/file.txt| tail -3 >tmp.txt tail -$y /home/file.txt head -3 >>tmp.txt (4 Replies)
Discussion started by: bhas85
4 Replies

3. Shell Programming and Scripting

How to Search string(which is in 2 lines) in a file?

Hello, I want to search 2 lines from the file. I wanted to display all such matches. Example file: ================== Testfile is test TEST1 TEST2 testing the file string to do testing TEST1 TEST2 sample strings ================= I wanted to search the file with 2 lines " TEST1... (3 Replies)
Discussion started by: balareddy
3 Replies

4. Shell Programming and Scripting

How to search number of occurrences of a particular string in a file through vi editor?

i have one file, i am doing 'vi Filename' now i want to search for particular string and i want to know how many times that string occurs in whole file (5 Replies)
Discussion started by: sheelsadan
5 Replies

5. Shell Programming and Scripting

search string in a file and retrieve 10 lines including string line

Hi Guys, I am trying to write a perl script to search a string "Name" in the file "FILE" and also want to create a new file and push the searched string Name line along with 10 lines following the same. can anyone of you please let me know how to go about it ? (8 Replies)
Discussion started by: sukrish
8 Replies

6. Shell Programming and Scripting

Printing 10 lines above and below the search string: help needed

Hi, The below code will search a particular string(say false in this case) and return me 10 lines above and below the search string in a file. " awk 'c-->0;$0~s{if(b)for(c=b+1;c>1;c--)print r;print("***********************************");print;c=a;}b{r=$ 0}' b=10 a=10 s="false" " ... (5 Replies)
Discussion started by: vimalm22
5 Replies

7. Shell Programming and Scripting

printing lines to a file from a particular string

Hi, A very Good Evening to All, I am writing a script for my application. I have a file with 1000 lines. Among that 1000 lines i am searching for a particular string. And from that string i need to pull all the data in to a seperate file. For example the contents of my file is as below. ... (4 Replies)
Discussion started by: intiraju
4 Replies

8. Shell Programming and Scripting

Get line number when matches a string

If I have a file something like as shown below, ARM*187878*hjhj BAG*88778*jjjj COD*7777*kkkk BAG*87878*kjjhjk DEF*65656*89989*khjkk I need the line numbers to be added with a colon when it matches the string "BAG". Here in my case, I need something like ARM*187878*hjhj... (4 Replies)
Discussion started by: Muthuraj K
4 Replies

9. UNIX for Dummies Questions & Answers

question about printing number of lines in a file

as the title, I had try use "wc -l test.txt" but it give me "<many spaces> 384 test.txt" but the result I want is just "384" could any person can help me that? Thx:( (5 Replies)
Discussion started by: a8111978
5 Replies
Login or Register to Ask a Question