Getting lines before and until next pattern in file /awk, sed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Getting lines before and until next pattern in file /awk, sed
# 1  
Old 10-12-2012
Getting lines before and until next pattern in file /awk, sed

Hi,

I need to get specific parts in a large file.

I need to:
Get a line containing an IP address, and read from there to another line saying ***SNMP-END***

So, I have the start and the end well defined, but the problem is that apparently the awk command using the -F option doesn't work good with the IP address, let's say 1.1.1.1

Originally the text it will be like this:

Code:
***SNMP-ST***
IP = 1.1.1.1
some text here
***SNMP-END***

That's what I have been trying to do, btw .. the file contains thousands of IP addresses and some of these 1.1.1.1, which are the ones I need to capture.

Any help is greatly appreciated.

Last edited by Scrutinizer; 10-12-2012 at 06:30 PM.. Reason: code tags
# 2  
Old 10-12-2012
This seems to print all of the lines you have labeled above as "some text here":
Code:
awk '/^IP = 1\.1\.1\.1$/{copy=1;next} /SNMP-END/{copy=0;next} copy' in

This User Gave Thanks to Don Cragun For This Post:
# 3  
Old 10-12-2012
Thanks for the reply.

For some reason I am getting the following error.

awk: syntax error near line 1
awk: bailing out near line 1
Exit 2

I am using solaris, not sure if changes something

---------- Post updated at 04:32 PM ---------- Previous update was at 04:27 PM ----------

Apparently it doesn't like the "copy", if I remove them it does something, obviously not what I am expecting, but it moves.
# 4  
Old 10-12-2012
Can't you simply run below command and get rid of lines starting with IP and ending with *:-

Code:
cat input | egrep -v "^IP|\*$"

This User Gave Thanks to Yoda For This Post:
# 5  
Old 10-12-2012
Quote:
Originally Posted by ocramas
Thanks for the reply.

For some reason I am getting the following error.

awk: syntax error near line 1
awk: bailing out near line 1
Exit 2

I am using solaris, not sure if changes something

---------- Post updated at 04:32 PM ---------- Previous update was at 04:27 PM ----------

Apparently it doesn't like the "copy", if I remove them it does something, obviously not what I am expecting, but it moves.
On Solaris systems use nawk or /usr/xpg4/bin/awk instead of awk.

---------- Post updated at 02:47 PM ---------- Previous update was at 02:45 PM ----------

Quote:
Originally Posted by bipinajith
Can't you simply run below command and get rid of lines starting with IP and ending with *:-

Code:
cat input | egrep -v "^IP|\*$"

He said he only wants lines from entries with IP address 1.1.1.1.
# 6  
Old 10-13-2012
Code:
awk '/IP *= *1\.1\.1\.1/ {print;while($0!~ /SNMP-END/){getline;print;}}' input_file

or
as Don Cragun has pointed out use nawk
Code:
nawk '/IP *= *1\.1\.1\.1/ {print;while($0!~ /SNMP-END/){getline;print;}}'  input_file

This User Gave Thanks to msabhi For This Post:
# 7  
Old 10-13-2012
Thanks guys, the last post from msabhi did the trick! but I was also able to get a lot of good things from the previous answers.

thanks,
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk with sed to combine lines and remove specific odd # pattern from line

In the awk piped to sed below I am trying to format file by removing the odd xxxx_digits and whitespace after, then move the even xxxx_digit to the line above it and add a space between them. There may be multiple lines in file but they are in the same format. The Filename_ID line is the last line... (4 Replies)
Discussion started by: cmccabe
4 Replies

2. UNIX for Beginners Questions & Answers

Sed/awk join lines once pattern found

Hi all OS - RHEL6.4 I have input file -f1.txt I need to search line which starts with \Start and read next line till it gets blank line and join them all. I need to trim any trailing spaces for each line.So output.txt should be.. \Start\now\fine stepwatch this space for toolsends... (7 Replies)
Discussion started by: krsnadasa
7 Replies

3. Shell Programming and Scripting

Using awk or sed to find a pattern that has lines before and after it

Dear gurus, Please help this beginner to write and understand the required script. I am looking for useing awk for sed. I have a few thousand lines file whose contain are mostly as below and I am trying to achieve followings. 1. Find a string, say user1. Then hash the line containing the... (6 Replies)
Discussion started by: ran_bon_78
6 Replies

4. Shell Programming and Scripting

sed -- Find pattern -- print remainder -- plus lines up to pattern -- Minus pattern

The intended result should be : PDF converters 'empty line' gpdftext and pdftotext?xml version="1.0"?> xml:space="preserve"><note-content version="0.1" xmlns:/tomboy/link" xmlns:size="http://beatniksoftware.com/tomboy/size">PDF converters gpdftext and pdftotext</note-content>... (9 Replies)
Discussion started by: Klasform
9 Replies

5. Shell Programming and Scripting

Replacing lines matching a multi-line pattern (sed/perl/awk)

Dear Unix Forums, I am hoping you can help me with a pattern matching problem. What am I trying to do? I want to replace multiple lines of a text file (that match a multi-line pattern) with a single line of text. These patterns can span several lines and do not always have the same number of... (10 Replies)
Discussion started by: thefang
10 Replies

6. Shell Programming and Scripting

Sed/awk/perl command to replace pattern in multiple lines

Hi I know sed and awk has options to give range of line numbers, but I need to replace pattern in specific lines Something like sed -e '1s,14s,26s/pattern/new pattern/' file name Can somebody help me in this.... I am fine with see/awk/perl Thank you in advance (9 Replies)
Discussion started by: dani777
9 Replies

7. Shell Programming and Scripting

How to print the lines between the pattern using awk/grep/sed?

Hi, I need a help to search a pattern and print the multiple lines between them. Input file: Tue May 29 12:30:33 EDT 2012:threadWebContainer : 357:com.travimp.hotelierlinks.abba.service.RequestHandler.requestService(String, ITICSDataSet): hotelCancelReservation request: ... (4 Replies)
Discussion started by: aroragaurav.84
4 Replies

8. Shell Programming and Scripting

sed/awk : how to delete lines based on IP pattern ?

Hi, I would like to delete lines in /etc/hosts on few workstations, basically I want to delete all the lines for a list of machines like this : for HOST in $(cat stations.lst |uniq) do # echo -n "$HOST" if ping -c 1 $HOST > /dev/null 2>&1 then HOSTNAME_val=`rsh $HOST "sed... (3 Replies)
Discussion started by: albator1932
3 Replies

9. Shell Programming and Scripting

sed/awk to insert multiple lines before pattern

I'm attempting to insert multiple lines before a line matching a given search pattern. These lines are generated in a separate function and can either be piped in as stdout or read from a temporary file. I've been able to insert the lines from a file after the pattern using: sed -i '/pattern/... (2 Replies)
Discussion started by: zksailor534
2 Replies

10. Shell Programming and Scripting

How to awk/sed/grep lines which contains a pattern at a given position

Dear friends I am new to linux and was trying to split some files userwise in our linux server. I have a data file of 156 continuous columns named ecscr final. I want the script to redirect all the lines containing a pattern of 7 digits to separate files. I was using grep to do that,... (2 Replies)
Discussion started by: anoopvraj
2 Replies
Login or Register to Ask a Question