How to display when nth line match a pattern?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to display when nth line match a pattern?
# 1  
Old 11-04-2014
How to display when nth line match a pattern?

Hi All,
I have sample of listing as following

Database 2 entry:

Database alias = PXRES
Database name = PXRES
Local database directory = /db2/data1/db2phnx
Database release level = d.00
Comment =
Directory entry type = Indirect
Catalog database partition number = 0
Alternate server hostname =
Alternate server port number =

Database 3 entry:

Database alias = CMNGI
Database name = CMNGI
Node name = CMNGI1F
Database release level = d.00
Comment =
Directory entry type = Remote
Catalog database partition number = -1
Alternate server hostname =
Alternate server port number =


AS you can see the 8th line contains the Directory Entry type = Remote or Indirect

How to just display 3rd line when the 8th line is match "Indirect" ?

Thanks.
# 2  
Old 11-04-2014
you can use awk for this (assuming you have 1 or more blank lines between each database entry):

Code:
awk '/Directory entry type = Indirect/ {
   split($0, L, "\n")
   print L[3]
}' RS= infile

# 3  
Old 11-04-2014
Quote:
Originally Posted by ckwan
Hi All,
I have sample of listing as following

Database 2 entry:

Database alias = PXRES<-- Is this 3rd line?
Database name = PXRES
Local database directory = /db2/data1/db2phnx
Database release level = d.00
Comment =
Directory entry type = Indirect <- Is this 8th line?
Catalog database partition number = 0
Alternate server hostname =
Alternate server port number =

Database 3 entry:

Database alias = CMNGI <-- Is this 3rd line?
Database name = CMNGI
Node name = CMNGI1F
Database release level = d.00
Comment =
Directory entry type = Remote <-- Is this 8th line?
Catalog database partition number = -1
Alternate server hostname =
Alternate server port number =


AS you can see the 8th line contains the Directory Entry type = Remote or Indirect

How to just display 3rd line when the 8th line is match "Indirect" ?

Thanks.
3rd line, 8th line,...counting from where? Is the lines marked in red your naming scheme? Do you want the line that says Database alias?
This User Gave Thanks to Aia For This Post:
# 4  
Old 11-04-2014
Yes good point Aia - print statement in the code above may need to change to print L[1] above if the OP is after the "Database alias" line.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. AIX

Print nth previous line after match

Please help me print nth line after match awk or sed one line command. (3 Replies)
Discussion started by: sushma123
3 Replies

2. Shell Programming and Scripting

awk to combine lines from line with pattern match to a line that ends in a pattern

I am trying to combine lines with these conditions: 1. First line starts with text of "libname VALUE db2 datasrc" where VALUE can be any text. 2. If condition1 is met then continue to combine lines through a line that ends with a semicolon. 3. Ignore case when matching patterns and remove any... (5 Replies)
Discussion started by: Wes Kem
5 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

Rearrange or replace only the second line after pattern match or pattern match

Im using the command below , but thats not the output that i want. it only prints the odd and even numbers. awk '{if(NR%2){print $0 > "1"}else{print $0 > "2"}}' Im hoping for something like this file1: Text hi this is just a test text1 text2 text3 text4 text5 text6 Text hi... (2 Replies)
Discussion started by: invinzin21
2 Replies

5. Shell Programming and Scripting

Change nth depending on matiching a pattern in Y line

Hi, I have below file, each line that starts with /* marks the beginning of the a new job. /* ----------------- cmdsMlyMoveTPMPLANTJ ----------------- UNIX_JOB CMMM002J CMDNAME /home2/proddata/bin/moveTPMPLANT.sh AGENT CMDSHP USER proddata AFTER CMMU001J /* "DDRG monthly... (13 Replies)
Discussion started by: varun22486
13 Replies

6. Shell Programming and Scripting

Insert new pattern in newline after the nth occurrence of a line pattern - Bash in Ubuntu 12.04

Hi, I am getting crazy after days on looking at it: Bash in Ubuntu 12.04.1 I want to do this: pattern="system /path1/file1 file1" new_pattern=" data /path2/file2 file2" file to edit: data.db - I need to search in the file data.db for the nth occurrence of pattern - pattern must... (14 Replies)
Discussion started by: Phil3759
14 Replies

7. UNIX for Dummies Questions & Answers

Printing nth and n+1th line after a pattern match

Hi , I want to print the nth and n+1 lines from a file once it gets a pattern match. For eg: aaa bbb ccc ddd gh jjjj If I find a match for bbb then I need to print bbb as well as 3rd and 4th line from the match.. Please help..Is it possible to get a command using sed :) (6 Replies)
Discussion started by: saj
6 Replies

8. Shell Programming and Scripting

search pattern and replace x-y characters in nth line after every match

Hi, I am looking for any script which can do the following. have to read a pattern from fileA and copy it to fileB. fileA: ... ... Header ... ... ..p1 ... ... fileB: .... .... Header (3 Replies)
Discussion started by: anilvk
3 Replies

9. Shell Programming and Scripting

Getting filename for Nth line pattern match

Hi, I have many scripts in particular directory. And few of the scripts have exit 0 in second line. Now i wanted to list out the scripts name which has the exit 0 in its second line I tried many options , but i can not get the filename along with the nth line pattern match :mad:. Can anyone... (14 Replies)
Discussion started by: puni
14 Replies

10. UNIX for Advanced & Expert Users

Command to display nth line before the string is matched.

All, Is there any way out to display the nth line before the string is matched ??? Eg : If i have a file which has the following contents and if i want to get the 3rd line before the string is matched a b c d e f if i give the input as f and lines before the match as 3 then it should... (5 Replies)
Discussion started by: helper
5 Replies
Login or Register to Ask a Question