Search and insert between Pattrens...


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Search and insert between Pattrens...
# 1  
Old 06-11-2007
Search and insert between Pattrens...

Hi Every One...

I wanted to inserted a line in between matched pattrens..

Ex...

InPut File..

WRITEQ
TS
**************************
aaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccc
SOME PATTREN's
RESP ( WS-RESP )
END-EXEC

Out Put...

WRITEQ
TS
**************************
aaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccc
SOME PATTREN's
dddddddddddddddddddddddd
TSQCHG MAIN
RESP ( WS-RESP )
END-EXEC



I have Tried Some thing of this sort...

/[ ]*WRITEQ/,/[ ]*END-EXEC{ /[ ]*RESP/a\
TSQCHG MAIN/;}

Search for lines between WRITEQ and END-EXEC and on matched ones after RESP insert TSQCHG MAIN
but this doesnot work.... Gives some error while running...

sed: 0602-403 /[ ]*WRITEQ/,/[ ]*END-EXEC{ /[ ]*RESP/a\
TSQCHG MAIN/;} is not a recognized function.
# 2  
Old 06-11-2007
Code:
awk ' /WRITEQ/,/END-EXEC/ { if ( $0 ~ /RESP/ ) {print; print "TSQCHG MAIN";next}}; 1' filename

Code:
sed "/WRITEQ/,/END-EXEC/{/RESP/s/$/\\
TSQCHG MAIN/;}" filename


Last edited by anbu23; 06-11-2007 at 03:11 AM..
# 3  
Old 06-11-2007
Quote:
Originally Posted by anbu23
Code:
awk ' /WRITEQ/,/END-EXEC/ { if ( $0 ~ /RESP/ ) {print; print "TSQCHG MAIN";next}}; 1' filename

Code:
sed "/WRITEQ/,/END-EXEC/{/RESP/s/$/\\
TSQCHG MAIN/;}" filename



that was a beauty....

One small addition...

if RESP is not found can we do it before END-EXEC...(only if RESP not Found)

Example....
WRITEQ
TS
**************************
aaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccc
SOME PATTREN's
END-EXEC

Out Put...

WRITEQ
TS
**************************
aaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccc
SOME PATTREN's
dddddddddddddddddddddddd
TSQCHG MAIN
END-EXEC
# 4  
Old 06-11-2007
awk ' /WRITEQ/,/END-EXEC/ { if ( $0 ~ /RESP/ ) {print; print "TSQCHG MAIN";next}}; 1' filename

i have changed this to

awk ' /WRITEQ/,/END-EXEC/ { if ( $0 ~ /RESP/ ) { print "TSQCHG MAIN";print;next}}; 1' filename

to print TSQCHG MAIN before RESP...
but if the RESP is not found i wanted that to be before "END-EXEC"....
# 5  
Old 06-11-2007
Quote:
Originally Posted by pbsrinivas
that was a beauty....

One small addition...

if RESP is not found can we do it before END-EXEC...(only if RESP not Found)

Example....
WRITEQ
TS
**************************
aaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccc
SOME PATTREN's
END-EXEC

Out Put...

WRITEQ
TS
**************************
aaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccc
SOME PATTREN's
dddddddddddddddddddddddd
TSQCHG MAIN
END-EXEC
Code:
awk ' /WRITEQ/,/END-EXEC/ { if ( $0 ~ /RESP/ ) {print; print "TSQCHG MAIN";next; flag=1}
	if( $0 ~ /END-EXEC/ && flag != 1 ) { print "TSQCHG MAIN"} }; 1' filename

# 6  
Old 06-11-2007
Quote:
Originally Posted by anbu23
Code:
awk ' /WRITEQ/,/END-EXEC/ { if ( $0 ~ /RESP/ ) {print; print "TSQCHG MAIN";next; flag=1}
	if( $0 ~ /END-EXEC/ && flag != 1 ) { print "TSQCHG MAIN"} }; 1' filename


sorry anbu...

i have done a small mistake in giving my requirement...

i wanted "TSQCHG MAIN" to be added before RESP.. not after....
so i have changed the awk u gave as follows..

awk ' /WRITEQ/,/END-EXEC/ { if ( $0 ~ /RESP/ ) {print "TSQCHG MAIN";print; next; flag=1}
if( $0 ~ /END-EXEC/ && flag != 1 ) { print "TSQCHG MAIN"} }; 1' filename


but this inserts at two places...

both before RESP and before END-EXEC...

awaiting ur reply....
# 7  
Old 06-11-2007
Quote:
Originally Posted by pbsrinivas
sorry anbu...

i have done a small mistake in giving my requirement...

i wanted "TSQCHG MAIN" to be added before RESP.. not after....
so i have changed the awk u gave as follows..

awk ' /WRITEQ/,/END-EXEC/ { if ( $0 ~ /RESP/ ) {print "TSQCHG MAIN";print; next; flag=1}
if( $0 ~ /END-EXEC/ && flag != 1 ) { print "TSQCHG MAIN"} }; 1' filename


but this inserts at two places...

both before RESP and before END-EXEC...

awaiting ur reply....
Move flag statement before to next statement
Code:
awk ' /WRITEQ/,/END-EXEC/ { if ( $0 ~ /RESP/ ) {print "TSQCHG MAIN";print; flag=1; next}
if( $0 ~ /END-EXEC/ && flag != 1 ) { print "TSQCHG MAIN"} }; 1' filename

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Search a certain char and insert new text if a match found

Have a file which has the create statement like below create table emp ( empno integer, empname char(50)) primary index(empno); i need to find a string starting with create and ends with semi-colon ;. if so insert the below statement before create statement rename table emp to emp_rename;... (2 Replies)
Discussion started by: Mohan0509
2 Replies

2. Shell Programming and Scripting

Search and Insert

I have a following file: # User defined in group admin = boss, sysadmin phpteam = php1, php2, php3 rubyteam = ruby1, ruby2 # SVN root should only be access by boss and system admin @admin = rw * = # Main web repository should only be access by boss and system admin, others... (3 Replies)
Discussion started by: ankur328
3 Replies

3. Shell Programming and Scripting

Search for / and insert \ for every instance

Hi, I want to do a sed (linux) or the alternative in PHP to insert a backslash in front of every occurrence of every forward slash ex. /archive/data/stanley --> \/archive\/data\/stanley I appreciate it! (4 Replies)
Discussion started by: deadyetagain
4 Replies

4. Shell Programming and Scripting

Search and Insert

Hi All I got one problem and want your help,what i want to do is Input 123 key0=A;B;C;:key1=X;Y;Z;: here 123 is a username I should search the username (in this case it is 123) in file and if found it should insert the additional string D as below Here 123 and key are tab seperated ... (6 Replies)
Discussion started by: parthmittal2007
6 Replies

5. Shell Programming and Scripting

KSH - search for string and insert line above

Hi,, Please excuse my lack of knowledge here. I think I am tring to do something fairly advanced yet am a bit of a beginner..... I want to use a korn shell (as is the norm with others in my company) to write a script to search a file for a string and insert some text above that line. Sudo... (5 Replies)
Discussion started by: HugoDarley
5 Replies

6. Shell Programming and Scripting

search a line and insert string into specific at position

Hi, guys. I have one question: How can I search for a line with certain string in it and then insert a string into this line? For example: There is a file called shadow, the contents of it are below: ************************** ... yuanz:VIRADxMsadfDF/Q:0:0:50:7:::... (9 Replies)
Discussion started by: daikeyang
9 Replies

7. Shell Programming and Scripting

Search between pattrens with one string in one or other line........

Hi have a lots of files with this type of code Example--1 PROCEDURE DIVISION USING AAA BBB CCC. Example--2 PROCEDURE DIVISION Some Commented Lines.... USING AAA BBB CCC. Example--3 (12 Replies)
Discussion started by: pbsrinivas
12 Replies

8. Shell Programming and Scripting

Search between pattrens.

i wanted to search between pattrens so i used awk /"EXEC CICS DELETEQ TS"/,/END-IF/ but the some change is AAAAAAAA EXEC CICS DELETEQ TS IF ..... END-IF.... XXXXXx XXX IF (3 Replies)
Discussion started by: pbsrinivas
3 Replies

9. Shell Programming and Scripting

Need to change a set of lines between two given Pattrens

Hi All I have a Small Requiement I wanted to replace all the Follwing lines as follows Input:: file1 EVALUATE WS-TEMP-ATTR(15:1) WHEN 'D' MOVE DFHDARK TO WS-ATTR-COLOR WHEN OTHER MOVE DFHDFT ... (9 Replies)
Discussion started by: pbsrinivas
9 Replies

10. Shell Programming and Scripting

sed search and insert

how can i modify a file using sed when searching for a pattern and insert newline after the pattern? pattern example: $ ...(any characters)...$ $ may082001.../tmp/msg.001,,$ REPT CLEAR ALARMS ON UNIT 1 $ may082001.../tmp/msg.002,,$ UNIT 1 IN SERVICE into: $... (1 Reply)
Discussion started by: apalex
1 Replies
Login or Register to Ask a Question