Visit Our UNIX and Linux User Community


[Solved] Sed/awk print between patterns the first occurrence


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting [Solved] Sed/awk print between patterns the first occurrence
# 1  
Old 09-13-2011
[Solved] Sed/awk print between patterns the first occurrence

Guys,

I am trying the following:

i have a log file of a webbap which logs in the following pattern:

Code:
2011-08-14 21:10:04,535 blablabla ERROR blablabla
       bla
       bla
      bla
      bla
2011-08-14 21:10:04,535 blablabla ERROR blablabla
       bla
       bla
      bla
      bla
2011-08-14 21:10:04,535 blablabla ERROR blablabla
       bla
       bla
      bla
      bla


what i need is to print everything between the ERROR pattern but only the first occurrence :

Code:
2011-08-14 21:10:04,535 blablabla ERROR blablabla
       bla
       bla
      bla
      bla


Please help!

Last edited by pludi; 09-13-2011 at 09:42 AM..
# 2  
Old 09-13-2011
the example you made is not so clear. timestamps are the same, also those "bla"s.

try this one liner, if it gives your needs:

Code:
awk  '/ERROR/{if(b) exit; else b=1}1'  yourFile

# 3  
Old 09-13-2011
thanks a lot, that's exactly what i needed!

Last edited by vbe; 09-13-2011 at 11:01 AM.. Reason: And so, we can put the thread as Solved...
# 4  
Old 09-14-2011
Alternate solution..
Code:
awk '/ERROR/{++t}t==1' inputfile

# 5  
Old 09-14-2011
Quote:
Originally Posted by michaelrozar17
Alternate solution..
Code:
awk '/ERROR/{++t}t==1' inputfile

this short one-liner looks nice. however it will go through the whole file anyway after getting the part of text we needed.
# 6  
Old 09-15-2011
Hi,

Using 'sed':
Code:
$ cat infile
2011-08-14 21:10:04,535 blablabla ERROR Exception1 blablabla
bla
bla
bla
bla
2011-08-14 21:10:04,535 blablabla ERROR Exteption2 blablabla
bla
bla
bla
bla
2011-08-14 21:10:04,535 blablabla ERROR Exception1 blablabla
bla
bla
bla
bla
2011-08-14 21:10:04,535 blablabla ERROR Exception3 blablabla
bla
bla
bla
$ sed -ne '/ERROR/I,/ERROR/I { H; b }; x; s/^\n//; s/\(.*\)\n.*/\1/; p; q' infile
2011-08-14 21:10:04,535 blablabla ERROR Exception1 blablabla
bla
bla
bla
bla

Regards,
Birei
# 7  
Old 09-15-2011
Thanks!

---------- Post updated at 05:19 PM ---------- Previous update was at 05:12 PM ----------

The above doesnt work as expected. The Exception1 is just an example. This command will run as a script and the pattern is a variable. What i need is to separate the errors and store an example of it in a file. The errors are different so i have to use the description of the error (i.e. Exception1) as a pattern.

Previous Thread | Next Thread
Test Your Knowledge in Computers #588
Difficulty: Easy
A linear search algorithm is also known as sequential search.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed print from last occurrence match until the end of last occurrence match

Hi, i have file file.txt with data like: START 03:11:30 a 03:11:40 b END START 03:13:30 eee 03:13:35 fff END jjjjjjjjjjjjjjjjjjjjj START 03:14:30 eee 03:15:30 fff END ggggggggggg iiiiiiiiiiiiiiiiiiiiiiiii I want the below output START (13 Replies)
Discussion started by: Jyotshna
13 Replies

2. Shell Programming and Scripting

awk to extract and print first occurrence of pattern in each line

I am trying to use awk to extract and print the first ocurrence of NM_ and NP_ with a : before in each line. The input file is tab-delimeted, but the output does not need to be. The below does execute but prints all the lines in the file not just the patterns. Thank you :). file tab-delimeted ... (2 Replies)
Discussion started by: cmccabe
2 Replies

3. UNIX for Dummies Questions & Answers

[Solved] Awk: count occurrence of each character for every field

Hi, let's say an input looks like: A|C|C|D A|C|I|E A|B|I|C A|T|I|B as the title of the thread explains, I am trying to get something like: 1|A=4 2|C=2|B=1|T=1 3|I=3|C=1 4|D=1|E=1|C=1|B=1 i.e. a count of every character in each field (first column of output) independently, sorted... (4 Replies)
Discussion started by: beca123456
4 Replies

4. Shell Programming and Scripting

Print mutliple patterns in a line using sed

Hi, I am trying to print multiple patterns in a line using sed. But it is printing only the last occurance of a pattern. If the line is the the output should be Lookup Procedure|Stored proc But the output I am getting is Stored proc The code I am using is echo... (9 Replies)
Discussion started by: kedar_laveti
9 Replies

5. Shell Programming and Scripting

[Solved] HP-UX awk sub multiple patterns

Hi, I am using sub to remove blank spaces and one pattern(=>) from the input string. It works fine when I am using two sub functions for the same. However it is giving error while I am trying to remove both spaces and pattern using one single sub function. Working: $ echo " OK => " |awk... (2 Replies)
Discussion started by: sai_2507
2 Replies

6. Shell Programming and Scripting

sed print between 2 patterns only last occurence

Hi, I have a file, which contains the following log data. I am trying to print fromt he file the following data: I have tried using sed, but I am getting from the first pattern Thanks for your help. (5 Replies)
Discussion started by: sol_nov
5 Replies

7. UNIX for Dummies Questions & Answers

[SOLVED] awk: matching degenerate patterns

Hi Folks, I have two arrays a: aaa bbb ccc ddd ddd aaa bbb ccc ddd ccc aaa bbb b: aaa bbb ccc aaa ccc bbb bbb aaa ccc ccc bbb aaa I want to compare row by row a(c1:c4) to b(c1:c3). If elements of 'b' match... (5 Replies)
Discussion started by: heecha
5 Replies

8. Shell Programming and Scripting

sed print from last occurrence match until the end of file

Hi, i have file f1.txt with data like: CHECK a b CHECK c d CHECK e f JOB_START .... I want to match the last occurrence of 'CHECK' until the end of the file. I can use awk: awk '/^CHECK/ { buf = "" } { buf = buf "\n" $0 } END { print buf }' f1.txt | tail +2Is there a cleaner way of... (2 Replies)
Discussion started by: ysrini
2 Replies

9. Shell Programming and Scripting

Sed/awk print between different patterns the first occurrence

Thanks for the help yesterday. I have a little modification today, I am trying the following: i have a log file of a webbap which logs in the following pattern: 2011-08-14 21:10:04,535 blablabla ERROR Exception1 blablabla bla bla bla bla 2011-08-14... (2 Replies)
Discussion started by: ppolianidis
2 Replies

10. Shell Programming and Scripting

Sed to print a string until the second occurrence of a character

Hi, I am totally new to shell scripting. I have a String "c:\working\html\index.txt.12-12-2009.bkp" I want to check if the string has more than one "." character. If it does I would like to retrieve only "c:\working\html\index.txt" i.e, discard the second occurrence of "." and the rest of the... (7 Replies)
Discussion started by: imr
7 Replies

Featured Tech Videos