Display lines after match is found within specified range


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Display lines after match is found within specified range
# 8  
Old 10-26-2012
Use /usr/xpg4/bin/awk or nawk.
# 9  
Old 10-26-2012
Quote:
Originally Posted by nsuresh316
... while using nawk no error message displayed but i didnt get any output
Does your input file match your sample file?
# 10  
Old 10-26-2012
After using this code
Code:
/usr/xpg4/bin/awk    '/REF\*D9\*1001/ {B1=1}
        /REF\*D9\*1010/ {B1=0}
        /NM1\*85/ && B1 {getline;print}
       ' file

Expected Output
Code:
N3*123 ABC FLATS~
N3*223 ABC FLATS~
N3*323 ABC FLATS~
N3*423 ABC FLATS~
N3*523 ABC FLATS~
N3*623 ABC FLATS~
N3*723 ABC FLATS~
N3*823 ABC FLATS~
N3*923 ABC FLATS~
N3*023 ABC FLATS~

Actual Output
Code:
N3*223 ABC FLATS~
N3*323 ABC FLATS~
N3*423 ABC FLATS~
N3*523 ABC FLATS~
N3*623 ABC FLATS~
N3*723 ABC FLATS~
N3*823 ABC FLATS~
N3*923 ABC FLATS~
N3*023 ABC FLATS~

I got the output but N3 segment of 1001 is missing

Last edited by nsuresh316; 10-26-2012 at 10:27 AM..
# 11  
Old 10-27-2012
pls attach your input file (x-ing out confidential data but retaining structure).
# 12  
Old 10-27-2012
Try:
Code:
awk -F'\*' '/NM1\*85/{getline p} /REF\*D9/ && $3>=1001 && $3<=1010{print p}' infile

# 13  
Old 10-27-2012
For sample i just added collection of segement of one form and it is identified by REF*D9.My original file contains output of 100 of forms
i cant add it here
So u can prepare a sample file by copying and pasting the below mentioned lines n times.
Note : Just increment the no in REF*D9 segment.
Code:
ISA
GS
ST
NM1*41
PER
NM1*40
HL*1
NM1*85
N3
N4
HL*2
SBR
NM1*IL
N3
N4
HL*3
PAT
NM1*QC
N3
N4
CLM
REF*D9*100000000001
HI
NM1*82
SBR*S
OI
NM1*IL
NM1*PR
LX*1
SV1
DTP*472
NM1*82
LX*2
SV1
DTP*472
NM1*82
LX*3
SV1
DTP*472
NM1*82
LX*4
SV1
DTP*472
NM1*82
LX*5
SV1
DTP*472
NM1*82
LX*6
SV1
DTP*472
NM1*82
LX*7
SV1
DTP*472
SE*1
GE*1
IEA*1

So what i need is N3 under NM1*85 while using this below code
Code:
awk 'c-->0;/NM1\*85/{c=1}' file

i am able to get N3 under NM1*85 of all 100 forms
Now I just want to get the N3 from the specified range for eg. 100000000001 to 100000000020
Also i get the desired line for eg N4 under NM1*85 using the same code like this
Code:
awk 'c-->0;/NM1\*85/{c=2}' file|grep -v N3

I want to do the same with the solution u are providing but for the specified range
# 14  
Old 10-27-2012
How do you expect the solutions provided to work on files that have nothing to do with your sample presented in the first place? In your recent file, there's NO REF*D9*1001 present, NOR do I find an NM1*85 within an REF*D9 defined range. And your expected output from post #10 definitely can't be produced with that input file.
Any proposal given relies on above data to be existent in the file; no surprise you get an empty output.
Please use the proposals and adapt to your needs.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Display match or no match and write a text file to a directory

The below bash connects to a site, downloads a file, searches that file based of user input - could be multiple (all that seems to work). What I am not able to figure out is how to display on the screen match found or no match found" and write a file to a directory (C:\Users\cmccabe\Desktop\wget)... (4 Replies)
Discussion started by: cmccabe
4 Replies

2. UNIX for Dummies Questions & Answers

awk - (URGENT!) Print lines sort and move lines if match found

URGENT HELP IS NEEDED!! I am looking to move matching lines (01 - 07) from File1 and 77 tab the matching string from File2, to File3.txt. I am almost done but - Currently, script is not printing lines to File3.txt in order. - Also the matching lines are not moving out of File1.txt ... (1 Reply)
Discussion started by: High-T
1 Replies

3. Shell Programming and Scripting

Grep multiple exact match, do not display lines

Hi, Need help to grep the following from a file x. I just want to grep exact match not lines and not partial word. CONFSUCCESS CONFFAIL CONFPARTIALSUCCESS >cat x xczxczxczc zczczcxx CONFSUCCESS czczczcczc czxxczxzxczcczc CONFFAIL xczxczcxcczczc zczczczcz CONFPARTIALSUCCESS czczxcxzc ... (4 Replies)
Discussion started by: rajeshwebspere
4 Replies

4. Shell Programming and Scripting

Display lines of two date range from syslog file

Hi Guys, I want to display lines from Solaris syslog file but with 2 dates range. I have some similar solution (https://www.unix.com/shell-programming-scripting/39293-grep-log-file-between-2-dates-4.html) which works fine but as you know syslog has different date format (Jan 22) so this is not... (1 Reply)
Discussion started by: prashant2507198
1 Replies

5. Shell Programming and Scripting

Grep range of lines to print a line number on match

Hi Guru's, I am trying to grep a range of line numbers (based on match) and then look for another match which starts with a special character '$' and print the line number. I have the below code but it is actually printing the line number counting starting from the first line of the range i am... (15 Replies)
Discussion started by: Kevin Tivoli
15 Replies

6. UNIX for Dummies Questions & Answers

How to display lines by range specified?

My input file is N3*123 ABC FLATS~ REF*D9*10000000001~ N3*223 ABC FLATS~ REF*D9*10000000002~ N3*323 ABC FLATS~ REF*D9*10000000003~ N3*423 ABC FLATS~ REF*D9*10000000004~ N3*523 ABC FLATS~ REF*D9*10000000005~ N3*623 ABC FLATS~ REF*D9*10000000006~ N3*723 ABC FLATS~ REF*D9*10000000007~ N3*823... (2 Replies)
Discussion started by: nsuresh316
2 Replies

7. UNIX for Dummies Questions & Answers

Display n lines after match found and other line

I have a file like this DoctorName Address1 Address2 DOB InsuredName Address1 Address2 DOB PatientName Address1 Address2 DOB ClaimNo1 DoctorName Address1 Address2 DOB InsuredName (2 Replies)
Discussion started by: nsuresh316
2 Replies

8. UNIX for Dummies Questions & Answers

Display n lines before match found

I have a file with following data A B C D E F G H I K L M N and search pattern is G Expected output (3 Replies)
Discussion started by: nsuresh316
3 Replies

9. UNIX for Dummies Questions & Answers

awk display the match and 2 lines after the match is found.

Hello, can someone help me how to find a word and 2 lines after it and then send the output to another file. For example, here is myfile1.txt. I want to search for "Error" and 2 lines below it and send it to myfile2.txt I tried with grep -A but it's not supported on my system. I tried with awk,... (4 Replies)
Discussion started by: eurouno
4 Replies

10. UNIX for Dummies Questions & Answers

Grep and display n lines after the match is found.

Hello, How do I use grep to find a pattern in a list of file and then display 5 lines after the pattern is matched Eg: I want to match the string GetPresentCode in all files in a folder and then see 4 lines following this match. I am not sure if grep is what should be used to achieve. Thanks!... (3 Replies)
Discussion started by: cv_pan
3 Replies
Login or Register to Ask a Question