Multiple pattern match and print the output in a single line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Multiple pattern match and print the output in a single line
# 1  
Old 10-17-2013
Lightbulb Multiple pattern match and print the output in a single line

I need to match two patterns in a log file and need to get the next line of the one of the pattern (out of two patterns) that is matched,
finally need to print these three values in a single line.

Sample Log:
Code:
2013/06/11 14:29:04 <0999> (725102)  Processing batch 02_1231324
2013/06/11 14:29:04 <0999> (725102)
Creating batch '02_1231324.0'...
2013/06/11 14:29:04 <0999> (725102)
Batch 02_1231324 was successful
TMR:Child ZERO, 160 Docs 320 Pgs 3874 KByts Tot 0.42 WAL 0.10 WALIO 0.15 IO 0.03 secs
2013/06/11 14:29:04 <0999> (725102)

I tried in the below way but this was not working.
Code:
awk -v b=$batchname '{{if ($0 ~ "Processing.*" b) st=$2 && if ($0 ~ "Batch b was successful" et=$2; getline; tt=$4} ; print st,et,tt}

Kindly help
# 2  
Old 10-17-2013
Not sure how long you follow these fora, but one thing you should take to heart: Be specific. Way more than you are in post#1. How do you expect s.o. to help if that person does not know WHAT "was not working". I guess - inferring from your awk script - that you want this output:
Code:
14:29:04 02_1231324 320

True? Not True?
# 3  
Old 10-18-2013
Lightbulb

Quote:
Originally Posted by RudiC
Not sure how long you follow these fora, but one thing you should take to heart: Be specific. Way more than you are in post#1. How do you expect s.o. to help if that person does not know WHAT "was not working". I guess - inferring from your awk script - that you want this output:
Code:
14:29:04 02_1231324 320

True? Not True?
Regrets for not giving proper input...Smilie

Desired output should have the highlighted contents in the log
Code:
 
 
2013/06/11 14:29:04 <0999> (725102)  Processing batch 02_1231324
2013/06/11 14:29:04 <0999> (725102)
Creating batch '02_1231324.0'...
2013/06/11 14:29:04 <0999> (725102)
2013/06/11 14:29:08  Batch 02_1231324 was successful
TMR:Child ZERO, 160 Docs 320 Pgs 3874 KByts Tot 0.42 WAL 0.10 WALIO 0.15 IO 0.03 secs
2013/06/11 14:29:08 <0999> (725102)

Anyway I am passing the batchname that is "02_1231324" as a variable.

Desired Output:

Code:
02_1231324,14:29:04,14:29:08,320

# 4  
Old 10-18-2013
I made some adjustments to your original script:
Code:
awk -v b=$batchname '{if ($0 ~ "Processing.*" b) st=$2; if ($0 ~ "Batch " b " was successful") {et=$2; getline; tt=$5;  print b,st,et,tt}}' file

# 5  
Old 10-18-2013
Quote:
Originally Posted by rpm120
Regrets for not giving proper input...Smilie

Desired output should have the highlighted contents in the log
Code:
 
 
2013/06/11 14:29:04 <0999> (725102)  Processing batch 02_1231324
2013/06/11 14:29:04 <0999> (725102)
Creating batch '02_1231324.0'...
2013/06/11 14:29:04 <0999> (725102)
2013/06/11 14:29:08  Batch 02_1231324 was successful
TMR:Child ZERO, 160 Docs 320 Pgs 3874 KByts Tot 0.42 WAL 0.10 WALIO 0.15 IO 0.03 secs
2013/06/11 14:29:08 <0999> (725102)

Anyway I am passing the batchname that is "02_1231324" as a variable.

Desired Output:

Code:
02_1231324,14:29:04,14:29:08,320

Try

Code:
$ cat file
2013/06/11 14:29:04 <0999> (725102)  Processing batch 02_1231324
2013/06/11 14:29:04 <0999> (725102)
Creating batch '02_1231324.0'...
2013/06/11 14:29:04 <0999> (725102)
2013/06/11 14:29:08  Batch 02_1231324 was successful
TMR:Child ZERO, 160 Docs 320 Pgs 3874 KByts Tot 0.42 WAL 0.10 WALIO 0.15 IO 0.03 secs
2013/06/11 14:29:08 <0999> (725102)

Code:
$ awk '/Processing/{s=$2;p=$NF}(p) && /successful/{t=$2;getline;print p,s,t,$5;p=s=t=""}' OFS=, file

02_1231324,14:29:04,14:29:08,320

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Get output of multiple pattern match from first field to a file

Hi All, Greetings! I have a file of 40000+ lines with different entries, I need matching entries filterd out to their files based on first filed pattern for the matching : For example: All server1 entries (in field1) to come together with its path in 2nd field. The best output I want... (9 Replies)
Discussion started by: rveri
9 Replies

2. UNIX for Beginners Questions & Answers

Output to file print as single line, not separate line

example of problem: when I echo "$e" >> /home/cogiz/file.txt result prints to file as:AA BB CC I need it to save to file as this:AA BB CC I know it's probably something really simple but any help would be greatly appreciated. Thank You. Cogiz (7 Replies)
Discussion started by: cogiz
7 Replies

3. Shell Programming and Scripting

Match Pattern and print pattern and multiple lines into one line

Hello Experts , require help . See below output: File inputs ------------------------------------------ Server Host = mike id rl images allocated last updated density vimages expiration last read <------- STATUS ------->... (4 Replies)
Discussion started by: tigerhills
4 Replies

4. Shell Programming and Scripting

Print only next pattern in a line after a pattern match

I have 2013-06-11 23:55:14 1Umexd-0004cm-IG <= user@domain.com I need sed/awk operation on this, so that it should print the very next pattern only after the the pattern mach <= ie only print user@domain.com (7 Replies)
Discussion started by: anil510
7 Replies

5. Shell Programming and Scripting

sed command to grep multiple pattern present in single line and delete that line

here is what i want to achieve.. i have a file with below contents cat fileName blah blah blah . .DROP this REJECT that . --sport 7800 -j REJECT --reject-with icmp-port-unreachable --dport 7800 -j REJECT --reject-with icmp-port-unreachable . . . more blah blah blah --dport 3306... (14 Replies)
Discussion started by: vivek d r
14 Replies

6. Shell Programming and Scripting

awk print pattern match line and following lines

Data: Pattern Data Data Data Data Data Data Data Data Data ... With awk, how do I print the pattern matching line, then the subsequent lines following the pattern matching line. Varying number of lines following the pattern matching line. (9 Replies)
Discussion started by: dmesserly
9 Replies

7. UNIX for Dummies Questions & Answers

MATCH A PATTERN AND PRINT A LINE ABOVE AND BELOW

Dear All, Hv a very specific requirement. I have a very large text file and in which I have to match a pattern and insert a line above and below. Eg: My file cat test date1 date2 date3 date4 I need to match 'date3' and insert "Reminder1" above date3 and insert 'reminder2'... (4 Replies)
Discussion started by: gokulj
4 Replies

8. Shell Programming and Scripting

match a pattern and print the line once

Hi, I have a xml file <cisco:name> <cisco:mdNm>Cisco Device 7500 A Series</cisco:mdNm> <cisco:meNm>10.1.100.19</cisco:meNm> <cisco:ehNm>/shelf=1</cisco:ehNm> <cisco:subname> <cisco:meNm>10.1.100.19</cisco:meNm> <cisco:sptp>Cisco PortA Series</cisco:sptp> ... (11 Replies)
Discussion started by: bhagirathi
11 Replies

9. Shell Programming and Scripting

How to print the output in single line

Hi, Please suggest, how to get the output of below script in single line, its giving me in different lines ______________________ #!/bin/ksh export Path="/abc/def/ghi"; Home="/home/psingh/prat"; cd $Path; find $Path -name "*.C#*" -newer "abc.C#1234" -print > $Home cat $Home | while... (1 Reply)
Discussion started by: Prat007
1 Replies

10. Shell Programming and Scripting

match a pattern, print it and the next line

I have a file nbu_faq.txt (Question/answer) which looks like this What I am trying to do is write out each question in a file1.txt and than the question/answer in a file2.txt like this file1.txt Q: What is nbu? Q: What is blablabla...? Q: Why ....? file2.txt Q: What is nbu? A:... (4 Replies)
Discussion started by: nymus7
4 Replies
Login or Register to Ask a Question

Featured Tech Videos