Grep word after last occurance of string and display next few lines


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep word after last occurance of string and display next few lines
# 8  
Old 12-05-2013
Quote:
Originally Posted by nes
Thanks for correction "Don Cragun",

Following code displays ERROR and WARNING from first 'Starting' occurance to second.

But I wanted from last to end of file in UNIX/LINUX also to solve this problem

Code:
ERROR="ERROR:"
WARNING="WARNING" 
 ERR=$ERROR"\|"$WARNING

awk  '/Starting/{if(b) exit; else b=1}1' $filename | grep -A3 -in "$ERR"

Please guide me.
With the : after ERROR marked in red above, I don't see how you got ERROR lines output either. I'm short on time today, (and this hasn't been tested), but try something more like:
Code:
ERROR="ERROR"
WARNING="WARNING"
ERR="$ERROR|$WARNING"

ed -s "$filename" <<-"EOF" | grep -E -A3 -in "$ERR"
        ?Starting?,$p
        q
EOF

# 9  
Old 12-06-2013
Thanks "Don Cragun",

This code is giving following error :

Code:
 syntax error at line : 5 `<<' unmatched

# 10  
Old 12-06-2013
If you entered:
Code:
ed -s "$filename" <<-"EOF"

exactly as shown above and you got that diagnostic (and you're using a Solaris/SunOS system), try running the script with /usr/xpg4/bin/sh instead of /bin/sh.
# 11  
Old 12-06-2013
Code:
nawk '
  /ERROR|WARNING/ {if (cnt==0) s=s (s?RS:s) b; cnt=3}
  cnt&&cnt-- {s=s RS $0}
  /Starting/ {s=""; cnt=0}
  {b=$0}
  END {print s}
' errorlog

This User Gave Thanks to MadeInGermany For This Post:
# 12  
Old 12-10-2013
Hi MadeInGermoney,

Code:
nawk '  /ERROR|WARNING/ {if (cnt==0) s=s (s?RS:s) b; cnt=3}  cnt&&cnt-- {s=s RS $0}  /Starting/ {s=""; cnt=0}  {b=$0}  END {print s}' errorlog

is not working in Linux environment.
# 13  
Old 12-10-2013
In Linux it's just awk
(In Solaris it's nawk or /usr/xpg4/bin/awk).
# 14  
Old 12-12-2013
Hi MadeInGermany,

Following script is displaying from Last occurance "Starting" to end of file, but not searching ERROR/WARNING within that block.

Please guide me how to get next two lines with ERROR/WARNING within that block.

Code:
awk '  /ERROR|WARNING/ {if (cnt==0) s=s (s?RS:s) b; cnt=3}  cnt&&cnt-- {s=s RS $0}  /Starting/ {s=""; cnt=0}  {b=$0}  END {print s}' errorlog

---------- Post updated at 03:26 PM ---------- Previous update was at 02:59 PM ----------

when I have given following code it is displaying properly from last occurance 'Starting' to end of file, searching ERROR/WARNING and redirecting it in "Extractfile" also, but line number is displaying wrong in grep. Please advise me.

Code:
 
ERROR="ERROR"
WARNING="WARNING"
ERR=$ERROR"\|"$WARNING
ERRFILE="Extractfile"
 
awk '{if (cnt==0) s=s (s?RS:s) b; cnt=3}cnt&&cnt-- {s=s RS $0}/Starting/ {s=""; cnt=0}{b=$0}END {print s}' $file | grep -A3 -in "$ERR" >> $ERRFILE

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to grep for a word and display last transection?

Hi, When we "grep" for a word in a file, it returns the last lines containing the word that we searched for. Is there a way to display last line to grep. Thanks Ex log. Ex. logname.log 2015-07-29 06:43:07.023|BETA |2015-07-29... (5 Replies)
Discussion started by: ooilinlove
5 Replies

2. Shell Programming and Scripting

Multi line document to single lines based on occurance of string

Hi Guys, I am new to awk and sed, i am working multiline document, i want to make make that document into SINGLE lines based on occurace of string "dwh". here's the sample of my problem.. dwh123 2563 4562 4236 1236 78956 12394 4552 dwh192 2656 46536 231326 65652 6565 23262 16625623... (5 Replies)
Discussion started by: victor369
5 Replies

3. Shell Programming and Scripting

Search a String and display only word.

Hello Gurus, Apologies if this Q has been repeated but i was not able to find it :( I have an input file: ------------------------------- Replace DB.Employee as select column1 column2 from DB_T.Emp and DB.Test and DB.Dept and DB_T.Ter; ------------------------ (4 Replies)
Discussion started by: indrajit_u
4 Replies

4. Shell Programming and Scripting

Parse a file to display lines containing a word

Hi! I'm trying to create a shell script to parse a file which might have multiple lines matching a pattern (i.e. containing some word). I need to return all lines matching the pattern, but stripping the contents of that line until the pattern is matched For example, if my input file was ... (4 Replies)
Discussion started by: orno
4 Replies

5. UNIX for Dummies Questions & Answers

how to grep the word and display only the second word from it

hi, consider the below line in a text file, 'Y',getdate(),'N','V',NULL ..... 'N',getdate(),'Y','D',NULL ..... 'Y','N','Y',getdate(),'Y','D',NULL .... as u see above, i want only the second word after the getdate() word... getdate() will not come 2nd word alwys it may be any position but i... (11 Replies)
Discussion started by: prsam
11 Replies

6. Shell Programming and Scripting

grep display word only

Folks, is it possible to display only words with grep (or any built-in ultility)? I have more than 1 pattern to search, say apple & orange The text goes like this: So I need to display all the words starting with apple or orange The output should be: Any idea? (7 Replies)
Discussion started by: bsddaemon
7 Replies

7. Shell Programming and Scripting

How can I match lines with just one occurance of a string in awk?

Hi, I'm trying to match records using awk which contain only one occurance of my string, I know how to match one or more (+) but matching only one is eluding me without developing some convoluted bit of code. I was hoping there would be some simple pattern matching thing similar to '+' but... (9 Replies)
Discussion started by: jonathanm
9 Replies

8. Shell Programming and Scripting

How to Grep for particular word and display..

Hi Guru's.... I've one log file in all my systems which writes the backup information.. I'have written a command like this: ssh -l ora${sid} ${primaryhost} "tail -50 /oracle/$ORACLE_SID/newbackup/END_BACKUP.log" |grep 'insert' |tail -1| awk '{print $7}' We have nearly 50 systems in our... (2 Replies)
Discussion started by: suri.tyson
2 Replies

9. UNIX for Dummies Questions & Answers

how to grep for a word and display only the word

Hi, When we "grep" for a word in a file, it returns the lines containing the word that we searched for. Is there a way to display only the words and not the entire line containing them. Thanks Ananth (6 Replies)
Discussion started by: ananthmm
6 Replies

10. UNIX for Dummies Questions & Answers

grep a word and display its column

Hi, I need idea about this, say I have this line: 05 21 * * 0,6 /user/clean.desktop.sh > /tmp/desktop_rpt 2>&1 I would need to grep the word desktop and display the /user/clean.desktop.sh and not the whole line. And if I have some more lines say, 05 21 * * 0,6 /user/clean.desktop.sh >... (1 Reply)
Discussion started by: Orbix
1 Replies
Login or Register to Ask a Question