pattern matching over more lines


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting pattern matching over more lines
# 1  
Old 04-22-2008
pattern matching over more lines

hi, i have a text file wich contains following informations:

1 Record 90 in base GUJA_2008 (Created: 2008-01-14 19:00:38, Modified: 2008-01-15 18:54:33)
1 YADM_20080101_A91645666_A91645666
4 2008/01/15/ADM.ADM/20080101.ADM.ADM.A91645666G001.jff
1 Record 91 in base GUJA_2008 (Created: 2008-01-14 19:00:38, Modified: 2008-01-15 18:55:36)
1 YADM_20080101_A91645690_A91645690
2 2008/01/15/ADM.ADM/20080101.ADM.ADM.A91645690G001.jff
1 Record 92 in base GUJA_2008 (Created: 2008-01-14 19:00:38, Modified: 2008-01-15 18:55:36)
1 YADM_20080101_A91645695_A91645695
1 2008/01/15/ADM.ADM/20080101.ADM.ADM.A91645695G001.jff
1 Record 93 in base GUJA_2008 (Created: 2008-01-14 19:00:38, Modified: 2008-01-16 16:13:13)
1 YADM_20080101_A91645701_A91645701
1 2008/01/15/ADM.ADM/20080101.ADM.ADM.A91645701G001.jff
3 2008/01/15/ADM.ADM/20080101.ADM.ADM.A91645701G002.jff
1 Record 94 in base GUJA_2008 (Created: 2008-01-14 19:00:38, Modified: 2008-01-15 18:55:36)
1 YADM_20080101_A91645705_A91645705
1 2008/01/15/ADM.ADM/20080101.ADM.ADM.A91645705G001.jff
1 Record 95 in base GUJA_2008 (Created: 2008-01-14 19:00:38, Modified: 2008-01-15 18:55:36)
1 YADM_20080101_A91645722_A91645722
1 2008/01/15/ADM.ADM/20080101.ADM.ADM.A91645722G001.jff
1 2008/01/15/ADM.ADM/20080101.ADM.ADM.A91645722G002.jff
1 2008/01/15/ADM.ADM/20080101.ADM.ADM.A91645722G003.jff
1 Record 96 in base GUJA_2008 (Created: 2008-01-14 19:00:38, Modified: 2008-01-15 18:55:36)
1 YADM_20080101_A91645756_A91645756
1 2008/01/15/ADM.ADM/20080101.ADM.ADM.A91645756G001.jff

Now i want to write a script which is searching between the lines Record...
If a *.jff line has a number, at the front of the line, which is greater than 1, then the line itself and the line after the "record.. line" for example, "YADM_20080101_A91645666_A91645666" should be printed.

The file should look like this after the pattern:

1 YADM_20080101_A91645666_A91645666
4 2008/01/15/ADM.ADM/20080101.ADM.ADM.A91645666G001.jff

1 YADM_20080101_A91645690_A91645690
2 2008/01/15/ADM.ADM/20080101.ADM.ADM.A91645690G001.jff

1 YADM_20080101_A91645701_A91645701
3 2008/01/15/ADM.ADM/20080101.ADM.ADM.A91645701G002.jff


is anyone able to help me?
# 2  
Old 04-22-2008
This should do the job:

Code:
awk '
$2 ~ /^YADM/{s=$0} 
/jff$/ && $1 > 1{print s RS $0 RS}
' file

Regards
# 3  
Old 04-22-2008
wow, i can't believe it! Smilie
but i don't understand the complete awk command, please can you explain it to me so that i could do the job myselft the next time?
# 4  
Old 04-22-2008
Quote:
Originally Posted by trek
wow, i can't believe it! Smilie
but i don't understand the complete awk command, please can you explain it to me so that i could do the job myselft the next time?
Sure!

Code:
$2 ~ /^YADM/{s=$0}

If the 2nd field begins with YADM copy the line to the variable s.

Code:
/jff$/ && $1 > 1{print s RS $0 RS}

If the current line ends with jff and the 1st field is greater then 1 print the variable s and the current line separated by record separators.

Regards
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Grep -v lines starting with pattern 1 and not matching pattern 2

Hi all! Thanks for taking the time to view this! I want to grep out all lines of a file that starts with pattern 1 but also does not match with the second pattern. Example: Drink a soda Eat a banana Eat multiple bananas Drink an apple juice Eat an apple Eat multiple apples I... (8 Replies)
Discussion started by: demmel
8 Replies

2. Shell Programming and Scripting

Deleting lines on matching certain pattern

hi I have a large xml file from which i have taken few lines . In this file I have to find for the string </invoices> and check if the 3 rd line after this string does not begin with <portCode> ,then i have to delete the string </invoices> and the next line having the string </shippingBill>... (13 Replies)
Discussion started by: sunnyboy
13 Replies

3. Shell Programming and Scripting

Sed: printing lines AFTER pattern matching EXCLUDING the line containing the pattern

'Hi I'm using the following code to extract the lines(and redirect them to a txt file) after the pattern match. But the output is inclusive of the line with pattern match. Which option is to be used to exclude the line containing the pattern? sed -n '/Conn.*User/,$p' > consumers.txt (11 Replies)
Discussion started by: essem
11 Replies

4. Shell Programming and Scripting

Pattern matching...of almost same lines

Hi all I am trying to process some data sample input is like this VARIABLE : T axis TDAY TIME : 02-FEB-2004 17:54 19755. VARIABLE : quality flag FILENAME : 1900054_prof.nc Z : 41 ... (3 Replies)
Discussion started by: Akshay Hegde
3 Replies

5. Shell Programming and Scripting

How to print all the lines after pattern matching?

I have a file that contains... Number -------------------- 1 2 3 4 i want to print all the numbers after the hyphen ... (6 Replies)
Discussion started by: ankitknit
6 Replies

6. Shell Programming and Scripting

Finding lines matching the Pattern and their previous lines in a file

Hi, I am trying to locate the occurences of certain pattern like 'Possible network disconnect' in a text file. I can get the actual lines matching the pttern using: grep -w 'Possible network disconnect' file_name. But I am more interested in getting the timing of these events which are... (7 Replies)
Discussion started by: sagarparadkar
7 Replies

7. Shell Programming and Scripting

pattern matching lines using the date, and then joining the lines

Hi Guys, Was trying to attempt the below using awk and sed, have no luck so far, so any help would be appreciated. Current Text File: The first line has got an "\n", and the second line has got spaces/tabs then the word and "\n" TIME SERVER/CLIENT TEXT... (6 Replies)
Discussion started by: eo29
6 Replies

8. Shell Programming and Scripting

I want to print next 3 lines after pattern matching.

Dear Experts, I have file called file1 in which i am greping a pattern after that i want to next 3 lines when that pattern is matched. Ex:- file1 USA UK India Africa Hello Asia Europe Australia Hello Peter Robert Jo i want to next 3 lines after matching Hello... (12 Replies)
Discussion started by: naree
12 Replies

9. Shell Programming and Scripting

counting the lines matching a pattern, in between two pattern, and generate a tab

Hi all, I'm looking for some help. I have a file (very long) that is organized like below: >Cluster 0 0 283nt, >01_FRYJ6ZM12HMXZS... at +/99% 1 279nt, >01_FRYJ6ZM12HN12A... at +/99% 2 281nt, >01_FRYJ6ZM12HM4TS... at +/99% 3 283nt, >01_FRYJ6ZM12HM946... at +/99% 4 279nt,... (4 Replies)
Discussion started by: d.chauliac
4 Replies

10. Shell Programming and Scripting

Pattern Matching and lines after that

I have a huge file and every paragraph has a date. But I want to retrieve the paras for the last two days only. So I can grep and findout the linenum for the first line since yesterday. Now I want to display everything after that line. And I am trying to do this inside a script so the linenum is a... (4 Replies)
Discussion started by: kaushys
4 Replies
Login or Register to Ask a Question