Select everything between first and last occurrence of same pattern


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Select everything between first and last occurrence of same pattern
# 8  
Old 06-21-2011
Another one with awk:
Code:
awk 'f && /one/{print;exit}/one/{f=1}f' file

This User Gave Thanks to Franklin52 For This Post:
# 9  
Old 06-21-2011
Thanks Yuzu & Franklin for simplified solution.

Hi Panyam,

On Solaris nawk does such type of complex operation. awk gives below error.Hence i was searching for other options.

Thanks for help.

Code:
 
awk: syntax error near line 1
awk: bailing out near line 1


Regards,
Usha
# 10  
Old 06-21-2011
Hello,

You can do cheat in sed , like below:

Code:
 
sed -n '/xyz/,$ p' input_file | sed -n '1,/xyz/ p'
 
If you are in solaries: you can use
 
/usr/xpg4/bin/awk (or) define such that even awk will use nawk only!!! a synonym minght be!!

Regards
Ravi
# 11  
Old 06-21-2011
Quote:
Originally Posted by Franklin52
Another one with awk:
Code:
awk 'f && /one/{print;exit}/one/{f=1}f' file

WATCH OUT : This code will exit at the second occurrence met so it does not exactly behave as you specified (since you expect thing be printed until the last occurrence of the pattern

Code:
 # echo "one
> one
> one
> one
> bla
> " | nawk 'f && /one/{print;exit}/one/{f=1}f'
one
one
#

# 12  
Old 06-21-2011
Quote:
Originally Posted by panyam
Hello,

You can do cheat in sed , like below:

Code:
 
sed -n '/xyz/,$ p' input_file | sed -n '1,/xyz/ p'

This code will fail for the same reasons ctsgnb mentioned; it will bail out after the second occurrence.

Regards,
Alister
# 13  
Old 06-21-2011
Hello Alister,

Yes , you are correct. My awk one works fine but not the sed..searching how to accomplish the same in sed.

Alister / Usha :

Seems ..got it!! ..how about this?

Code:
 
sed -n '/one/,$ p' input_file | sed '1!G;h;$!d' | sed -n '/one/,$ p' | sed '1!G;h;$!d'

If you have "tac" in system:

Code:
sed -n '/one/,$ p' rem | tac | sed -n '/one/,$ p' | tac

Thanks
Ravi

Last edited by panyam; 06-21-2011 at 11:33 AM.. Reason: Added sed code
# 14  
Old 06-21-2011
Code:
tail -r infile | sed '/one/,$!d' | tail -r | sed '/one/,$!d'

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk to extract and print first occurrence of pattern in each line

I am trying to use awk to extract and print the first ocurrence of NM_ and NP_ with a : before in each line. The input file is tab-delimeted, but the output does not need to be. The below does execute but prints all the lines in the file not just the patterns. Thank you :). file tab-delimeted ... (2 Replies)
Discussion started by: cmccabe
2 Replies

2. Shell Programming and Scripting

awk command to get file content until 2 occurrence of pattern match

AWK command to get file content until 3 occurrence of pattern match, INPUT FILE: JMS_BODY_FIELD:JMSText = <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <custOptIn xmlns="http://com/walm/ta/cu/ccs/xml2"> <person>Romi</person> <appName>SAP</appName> </custOptIn> ... (4 Replies)
Discussion started by: prince1987
4 Replies

3. Shell Programming and Scripting

UNIX help to print 50 lines after every 3rd occurrence pattern till end of file

I need help with extract/print lines till stop pattern. This needs to happen after every 3rd occurrence of start pattern and continue till end of file. Consider below is an example of the log file. my start pattern will be every 3rd occurrence of ERROR_FILE_NOT_FOUND and stop pattern will be... (5 Replies)
Discussion started by: NSS
5 Replies

4. Shell Programming and Scripting

Match from one pattern to second occurrence of second pattern

Given an XML file that contains (NOT "consists of"): </dict> <key>system.</key> <dict> <key>rule</key> <string>default</string> </dict> <key>system.burn</key> ... (9 Replies)
Discussion started by: jnojr
9 Replies

5. Shell Programming and Scripting

Changing the first occurrence after matching a pattern

Hi, I got a file which looks like this: Value A Status: - Other: - Value B Status: - Other: - Value C Status: - Other: - I would like to change only the first line which includes the "Status:" string after matching the line containing "Value B", so the output file should look... (5 Replies)
Discussion started by: wenclu
5 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. Shell Programming and Scripting

print only the first occurrence of a pattern

Hi, I have a file as below select or create proc /*comments*/ /*comments*/ /*comments*/ /*comments*/ ( variables4 datatypes1, variables1 datatypes2, variables2 datatypes3, variables3 datatypes2 ) some text some text ( sometext some text ) some text some text (3 Replies)
Discussion started by: manasa_vs
3 Replies

8. UNIX for Advanced & Expert Users

Unix: list out Pattern occurrence (count)

Need to search a pattern occurrence (count) in a specified file. Below is the details $ cat fruits apple apple ball ball apple ball ball ball apple apple apple cat cat cat cat cat apple apple Note: If I'll use the grep command with -c option then it'll count the 1st occurrence in... (6 Replies)
Discussion started by: tp2115
6 Replies

9. UNIX for Dummies Questions & Answers

line number of the i-th occurrence of a pattern

Hi all, is there a simple way to obtain the line number of the i-th occurrence of a pattern? I have OCCURRENCE=`grep -io "${STRING_NAME}" ${1}-${8}${EXT}.out_bis| wc -l` which tells me how many occurency I have. I would like to go through them and determine the line number and assign... (6 Replies)
Discussion started by: f_o_555
6 Replies

10. Shell Programming and Scripting

Count the number of occurrences of a pattern between each occurrence of a different pattern

I need to count the number of occurrences of a pattern, say 'key', between each occurrence of a different pattern, say 'lu'. Here's a portion of the text I'm trying to parse: lu S1234L_149_m1_vg.6, part-att 1, vdp-att 1 p-reserver IID 0xdb registrations: key 4156 4353 0000 0000 ... (3 Replies)
Discussion started by: slipstream
3 Replies
Login or Register to Ask a Question