Replace multiple lines between tags using sed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replace multiple lines between tags using sed
# 1  
Old 11-24-2008
Replace multiple lines between tags using sed

I have a file example.txt with content look like this:
PHP Code:
<TAG>
1
2
3
</TAG
and I use a sed command to replace everything between <TAG></TAG> as below:

PHP Code:
sed -'s/\(<TAG>\)[^<]*\(<.*\)/something/g' example.txt example.txt.new 
But unfortunately, the command failed to replace as i want, it only work if the content between the tags are not break into multi-line. Could someone please explain how to solve this case?

Thanks a lot.
# 2  
Old 11-24-2008
Try this:
Code:
awk '/<TAG>/{p=1;print}/<\/TAG>/{p=0}!p' file

# 3  
Old 11-24-2008
many thanks Franklin!

Your awk command doesn't replace the content between the tags, but it deletes them. Now, i can use sed command to add new content as expect. Thanks again for your help.
# 4  
Old 11-24-2008
Try:

Code:
sed -n '/<TAG>/,/<\/TAG>/p' < file | sed  '/TAG/d'

# 5  
Old 11-24-2008
To replace the text with something you can try this:

Code:
awk '/<TAG>/{p=1;print;print "something"}/<\/TAG>/{p=0}!p' file

# 6  
Old 11-24-2008
I really appreciated for your help dennis. But the Franklin's command works very well in my situation. Maybe i'll need your helps for my future's troubles, but i owed you this time Smilie
# 7  
Old 05-11-2009
Sorry to bring up this old thread but I couldn't find a better and more relevant place.

I have a similar situation, where I wish to remove the code between two tags in many thousands of files.

Here is the code snippet:

Code:
<AFFILIATECODEBEGIN>

<p align="center">
<script type="text/javascript"><!--
auctionads_ad_client = "editedforprivacy";
auctionads_ad_campaign = "42efbc14b4c2adfae40ff87882f07569";
auctionads_ad_width = "120";
auctionads_ad_height = "240";
auctionads_ad_kw =  "japan";
auctionads_color_border =  "CC0000";
auctionads_color_bg =  "FFFFFF";
auctionads_color_heading =  "000000";
auctionads_color_text =  "000000";
auctionads_color_link =  "FFFFFF";
--></script>

<script type="text/javascript" src="http://ads.auctionads.com/pagead/show_ads.js">
</script>

</p>

</AFFILIATECODEBEGIN>

I have tried running

Code:
awk '/<AFFILIATECODEBEGIN>/{p=1;print}/<\/AFFILIATECODEBEGIN>/{p=0}!p' festivals.html

And also using * instead of naming a specific file. I am output the contents of the file, but nothing is removed or changed.

Thanks in advance for any suggestions.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace a string with multiple lines

Hello Guys, I need to replace a string with multiple lines. For eg:- ABC,DEF,GHI,JKL,MNO,PQR,STU need to convert the above as below:- ABC,DEF, GHI1 GHI2 GHI3, JKL,MNO, PQR1 PQR2 PQR3, STU i have tried using code as:- (2 Replies)
Discussion started by: jassi10781
2 Replies

2. 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

3. Shell Programming and Scripting

Replace multiple lines through sed

Hi All, I have a input file as sample below <this is not starting of file> record line1 line2 line3 end line4 line5 record line6 line7 line8 my requirement is this, i want to select a pattern between first record and end, whatever is written between first record and end. and... (0 Replies)
Discussion started by: adgangwar
0 Replies

4. Shell Programming and Scripting

Script to find & replace a multiple lines string across multiple php files and subdirectories

Hey guys. I know pratically 0 about Linux, so could anyone please give me instructions on how to accomplish this ? The distro is RedHat 4.1.2 and i need to find and replace a multiple lines string in several php files across subdirectories. So lets say im at root/dir1/dir2/ , when i execute... (12 Replies)
Discussion started by: spfc_dmt
12 Replies

5. Shell Programming and Scripting

search and replace, when found, delete multiple lines, add new set of lines?

hey guys, I tried searching but most 'search and replace' questions are related to one liners. Say I have a file to be replaced that has the following: $ cat testing.txt TESTING AAA BBB CCC DDD EEE FFF GGG HHH ENDTESTING This is the input file: (3 Replies)
Discussion started by: DeuceLee
3 Replies

6. Shell Programming and Scripting

replace (sed?) a string in file with multiple lines (string) from variable

Can someone tell me how I can do this? e.g: a=$(echo -e wert trewt ertert ertert ertert erttert erterte rterter tertertert ert) How do i replace the STRING with $a? I try this: sed -i 's/STRING/'"$a"'/g' filename.ext but this don' t work (2 Replies)
Discussion started by: jforce
2 Replies

7. Shell Programming and Scripting

replace (sed?) a single line/string in file with multiple lines (string) from another file??

Can someone tell me how I can do this? e.g: Say file1.txt contains: today is monday the 22 of NOVEMBER 2010 and file2.txt contains: the 11th month of How do i replace the word NOVEMBER with (5 Replies)
Discussion started by: tuathan
5 Replies

8. Shell Programming and Scripting

sed find and replace multiple lines

I am new to linux and would like to modify the contents of a file preferably using a one line. The situation is as follows <start> some lines "I am the string" "replace string" more lines here <end> In the above example,On encountering "I am the string", the "replace string "should be... (6 Replies)
Discussion started by: supersimha
6 Replies

9. Shell Programming and Scripting

replace multiple lines in multiple files

i have to search a string and replace with multiple lines. example Input echo 'sample text' echo 'college days' output echo 'sample text' echo 'information on students' echo 'emp number' echo 'holidays' i have to search a word college and replace the multiple lines i have... (1 Reply)
Discussion started by: unihp1
1 Replies

10. Shell Programming and Scripting

using sed command to replace multiple lines

the file contains the follwoing lines /* * Copyright (C) 1995-1996 by XXX Corporation. This program * contains proprietary and confidential information. All rights reserved * except as may be permitted by prior written consent. * * $Id: xxx_err.h,v 1.10 2001/07/26 18:48:34 zzzz $ ... (1 Reply)
Discussion started by: radha.kalivar
1 Replies
Login or Register to Ask a Question