How to replace a line below where the pattern found


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to replace a line below where the pattern found
# 1  
Old 02-03-2009
How to replace a line below where the pattern found

Hi All,

I have a file say abc.xml. In this file, I need to search for a pattern “SAP_GATEWAY_HOST”; if this pattern found and the next line also contain the pattern “nwprc03.cos” then I need to replace this pattern “nwprc03.cos” with some other pattern “nwdrc03.apjp”.

$ cat abc.xml
<NameValuePair>
<name>SAP_APPLICATION_HOST</name>
<value>nwprc00.cos</value>
</NameValuePair>
<NameValuePair>
<name>SAP_GATEWAY_HOST</name>
<value>nwprc00.cos</value>
</NameValuePair>

Required abc.xml should be:
$ cat abc.xml
<NameValuePair>
<name>SAP_APPLICATION_HOST</name>
<value>nwprc00.cos</value>
</NameValuePair>
<NameValuePair>
<NameValuePair>
<name>SAP_GATEWAY_HOST</name>
<value>nwdrc01.apjp</value>
</NameValuePair>


Thanks,
Ritesh Jain
# 2  
Old 02-03-2009
this should work:

Code:
#  awk '!/SAP_GATEWAY_HOST/{print}      /SAP_GATEWAY_HOST/{print;getline; gsub(/nwprc00.cos/,"nwdrc03.apjp",$0);print}' abc.xml


<NameValuePair>
<name>SAP_APPLICATION_HOST</name>
<value>nwprc00.cos</value>
</NameValuePair>
<NameValuePair>
<name>SAP_GATEWAY_HOST</name>
<value>nwdrc03.apjp</value>
</NameValuePair>

(use nawk or /usr/xpg4/bin/awk for Solaris)
# 3  
Old 02-03-2009
Another one:
Code:
awk '/SAP_APPLICATION_HOST/{f=0}/nwprc00.cos/{if(!f){f++}else{gsub(/nwprc00.cos/,"nwdrc03.apjp",$0)}}1' file

# 4  
Old 02-05-2009
MySQL

Thanks Tytalus & Danmero for your valueable suggession.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Append text on particular line after pattern found

hi, i have /etc/inittab, I want to add another line after that when i find a pattern "l6:6:wait:/etc/rc.d/rc 6". original l6:6:wait:/etc/rc.d/rc 6 after-change l6:6:wait:/etc/rc.d/rc 6 /sbin/if-pp-to-cng (3 Replies)
Discussion started by: learnbash
3 Replies

2. Shell Programming and Scripting

If first pattern is found, look for second pattern. If second pattern not found, delete line

I had a spot of trouble coming up with a title, hopefully you'll understand once you read my problem... :) I have the output of an ldapsearch that looks like this: dn: cn=sam,ou=company,o=com uidNumber: 7174 gidNumber: 49563 homeDirectory: /home/sam loginshell: /bin/bash uid: sam... (2 Replies)
Discussion started by: samgoober
2 Replies

3. Shell Programming and Scripting

Read file and replace a particular line if found

Hi All There is another challenge which stand in front of me. And want all to have the experience with that I have a file in Unix say a.txt. What I was trying is to read the file line by line and matching the line to particular pattern, and if that pattern found I want to replace that line... (5 Replies)
Discussion started by: adisky123
5 Replies

4. Shell Programming and Scripting

pattern match and replace another pattern in same line

I have a pattern username:x:32005:32006::/usr/local/user:/bin/bash I need to match the line containing username and replace /bin/bash with /usr/local/my/bin/noshell So it becomes username:x:32005:32006::/usr/local/user:/usr/local/my/bin/noshell (7 Replies)
Discussion started by: anilcliff
7 Replies

5. Shell Programming and Scripting

Append next line to previous line when one pattern not found

Hi, I need help for below scenario.I have a flat file which is having records seperated by delimiters which will represent each record for oracle table.My Control file will consider each line as one record for that table. Some of the lines are aligned in two/three lines so that records are... (4 Replies)
Discussion started by: kannansr621
4 Replies

6. UNIX for Dummies Questions & Answers

Replace line with found unknown pattern

Hi, I have a file with the following content: --------- a 3242 tc_5 gdfg4 random text a 3242 tc_6 gdfg4 random text a 3242 tc_7 gdfg4 random text a 3242 tc_4 gdfg4 --------- I want to replace the lines containing tc_? (tc_5, tc_6 etc. even with unknown numbers) with the found... (5 Replies)
Discussion started by: joas
5 Replies

7. Shell Programming and Scripting

extract specific line if the search pattern is found

Hi, I need to extract <APPNUMBER> tag alone, if the <college> haas IIT Chennai value. college tag value will have spaces embedded. Those spaces should not be suppresses. My Source file <Record><sno>1</sno><empid>E0001</empid><name>Rejsh suderam</name><college>IIT ... (3 Replies)
Discussion started by: Sekar1
3 Replies

8. Shell Programming and Scripting

To find the line no, where the particular pattern is not found

Hi, suppose i have a txt file containing thye following data 2012156|sb3|nwknjps|BAYONNE|NJ|tcg 201221|094|mtnnjprc:HACKENSACK|NJ|tcg 201222|wn3|mtnnjtc|HACKENSACK|NJ|tcg 2018164|ik4|mtnntc|JERSEY CITY|NJ|tcg 20123482|ik4|mtnnjpritc,JERSEY CITY|NJ|tcg... (3 Replies)
Discussion started by: priyanka3006
3 Replies

9. Shell Programming and Scripting

Delete line if pattern not found

I thought that this was going to be quit simple using sed but i wasn't able to find a way to delete the second line of a text file if my pattern was not found in the line With awk i am completly useless :rolleyes: Any ideas? (2 Replies)
Discussion started by: jepeto
2 Replies

10. Shell Programming and Scripting

change line found by pattern using sed

I want to change a line like CPM_THRESHOLD 0.8 // to a new value using sed I am trying sed -i "s/CPM_THRESHOLD/CPM_THRESHOLD\t$COH\t\t\/\//" $INPUT_4 but how can i substitute the whole line begining with CPM_THRESHOLD and substitute it? (2 Replies)
Discussion started by: larne
2 Replies
Login or Register to Ask a Question