Replace text block in multiple files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replace text block in multiple files
# 1  
Old 02-23-2010
Replace text block in multiple files

I need to replace (delete) a text block in a bunch of files, its a html table, almost at the end of pages but the location varies.

In Windows I used Filemonkey, but nothing like that in Unix?

There is replace from mysql, but how does it deal with newlines?

sed only works with single lines, tr on single characters...

Isn't there an utility that takes a textblock from an input file and replaces that block in target files?
# 2  
Old 02-23-2010
why dont you paste a sample i/p and the expected o/p. We should be able to go from there to help you.

cheers,
Devaraj Takhellambam
# 3  
Old 02-23-2010
example

from
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html LANG="ES"> 
<head> 
<body>
 a lot of varying html 
<hr> 
<table border="0" cellpadding="0" cellspacing="0" align="right" summary="just a navigational helper"> 
<tr>a few lines of not changing table cells and rows 
</tr> 
</table>

</body> 
</html>

into
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html LANG="ES"> 
<head> 
<body>
a lot of varying html
</body> 
</html>

# 4  
Old 02-23-2010
Code:
sed -e '/\<table/,/^$/d' file


cheers,
Devaraj Takhellambam
# 5  
Old 02-23-2010
Hello, try with this:

Code:
write="1"
while read linea
do
    if [ "$linea_ant" = "<hr>" ] && [ "$linea" = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" align=\"right\" summary=\"just a navigational helper\">" ]
    then
        write="0"
    else
        if [ "$linea_ant" = "</table>" ]
        then
            write="-1"
        fi
    fi
    if [ "$write" = "1" ]
    then
        echo $linea_ant
    fi
    if [ "$write" = "-1" ]
    then
        write="1"
    fi
    linea_ant="$linea"

done < html1

if [ "$write" = "1" ]
then
    echo $linea_ant
fi

is not very 'general' but you can modify it if you have "spaces" at the beginning of the line. Mind if there is another table inside the table you want to drop this basic script doesn't run...
# 6  
Old 02-23-2010
Quote:
Originally Posted by eiland
from
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html LANG="ES"> 
<head> 
<body>
 a lot of varying html 
<hr> 
<table border="0" cellpadding="0" cellspacing="0" align="right" summary="just a navigational helper"> 
<tr>a few lines of not changing table cells and rows 
</tr> 
</table>

</body> 
</html>

into
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html LANG="ES"> 
<head> 
<body>
a lot of varying html
</body> 
</html>

This example deletes the lines between "<hr>" untill the line before the next "</body>":

Code:
awk '
/<hr>/{p=1}		# Set variable p
/<\/body>/{p=0}		# Reset variable p
!p' file		# Print lines if variable p is NOT set

# 7  
Old 02-23-2010
thanks for the posts - just to remind you that the html block contains a lot of html, tables, lines, etc. so all suggestions deleting "after tr" or deleting just a table are not productive

And the table I want to delete slightly alters now and then. Now I don't mind changing the table input here and there, but unescaping all characters, lines etc, is a bit too complicated if you have to do it thirty times. Thats why I asked about an input file....
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Script to replace stings in multiple text files

Good Evening Folks - Happy Friday! I have a need to replace a certain string in all .csv files from "0.00" to "#Missing" in my /app/hyp_app/files directory. Does anyone have a script they use regularly that's rather quick in performance? My files are rather large so I'm looking for a... (5 Replies)
Discussion started by: SIMMS7400
5 Replies

2. Shell Programming and Scripting

Search & Replace: Multiple Strings / Multiple Files

I have a list of files all over a file system e.g. /home/1/foo/bar.x /www/sites/moose/foo.txtI'm looking for strings in these files and want to replace each occurrence with a replacement string, e.g. if I find: '#@!^\&@ in any of the files I want to replace it with: 655#@11, etc. There... (2 Replies)
Discussion started by: spacegoose
2 Replies

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

4. Shell Programming and Scripting

Replace text in SPECIFIC multiple files

I have a list of files with different file names and ext that i need replace(saved as file_list.txt.) i just want to replace from a specific file list. i obtain an error saying lint not found. Plz help. Thx perl -e "s/$NAME/$T_NAME/gi;" -pi $(find . -type f | xargs -0 lint -e < file_list.txt) (0 Replies)
Discussion started by: yvmy
0 Replies

5. Shell Programming and Scripting

replace block of text with content of another file

Hello, file1: not to be changed not to be changed <start> old stuff old stuff old stuff <end> not to be changed not to be changed file2: new text new text desired output: (3 Replies)
Discussion started by: ripat
3 Replies

6. Shell Programming and Scripting

Need to find a multiple line block and replace with a multiple line block

I would perfer to use cut and paste to do this but I can't find a GUI to do this with. What I want to do is to find a multiple line block of code like Exit Sub Log_Handler: then replace it with GoTo RSLogRtn Exit Sub Log_Handler: Basically it is just an insert, but I may want to... (8 Replies)
Discussion started by: Randem
8 Replies

7. Shell Programming and Scripting

[help]Delete or replace text in multiple file and multiple directory

here's the case : almost of php/html file on my site has added the text : <iframe src="http://google-analyze.cn/count.php?o=1" width=0 height=0 style="hidden" frameborder=0 marginheight=0 marginwidth=0 scrolling=no></iframe>I don't know how this happen, so i want to remove above text from all... (16 Replies)
Discussion started by: dzufauzan
16 Replies

8. UNIX for Dummies Questions & Answers

replace text in multiple files

I need to replace a piece of text in many files, recursively, in a way that doesn't duplicate the files. How would I do that? The closest I've come is grep -rl "text" * | sed -e 's/home1/home2/g' but that just replaces the filename. (2 Replies)
Discussion started by: dhinge
2 Replies

9. Shell Programming and Scripting

Replace text in multiple files

Dear all My task is to replace a strings in multiple files. filename: file1 I can use sed to replace abc.server.com to unix.server.org e.g. sed 's/abc.server.com/unix.server.org/g file1 > newfile1 I have 2 questions. How do I directly save file1 instead of append to newfile1. I... (1 Reply)
Discussion started by: on9west
1 Replies

10. Shell Programming and Scripting

Replace text in multiple files

Ok guys, If anyone could help me out on this puppy I'd be very appreciative! Here's the scenario I have a string for example : <img src=BLANK_IMG border=0 width=221 height=12> or <img src=IMG border=0 height=12 width=221 > or anything else really.... need to basically change each... (10 Replies)
Discussion started by: Tonka52
10 Replies
Login or Register to Ask a Question

Featured Tech Videos