Replacing HTML tags with sed


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Replacing HTML tags with sed
# 1  
Old 09-12-2013
Replacing HTML tags with sed

Ok, so this is stupid simple, and I know I am going to feel like an idiot when I get help.

I am altering a HTML report that has contraband in it so that the links to said contraband and the images are not shown.

The link/img pairs are in the form of :
Code:
<a href="files\Image\imgcache.0_embedded_47.jpg" title=""><img src="thumbnails\imgcache.0_embedded_47_thumb.jpg" style="width:100%; height=100%"></a>

All the replacements I need to do start with "files" in the link, and "thumbnails" in the image tags. Everything after that is variable.

The sed command I am using is :
Code:
sed 's#\<a href=\"files*\>\<img src=\"thumbnails*\>#\<img src=redact.png\>#g' File\ System\ Extraction\ Report.html > altered.html

Any help would be appreciated, as I have spent way to long on this already.
# 2  
Old 09-12-2013
Can you also post desired output for that sample data?
# 3  
Old 09-12-2013
Yes, the desired output would take the original link and image tags and replace them with just :

Code:
<img src=redact.png>

# 4  
Old 09-12-2013
sed uses regexes, not globs, which explains part of your difficulty.

Code:
files*

In shell globbing, * means "anything else". In regex, it means "zero or more of the previous". So files* would match files, filess, filesssssssssssssssss, but wouldn't match files\

The regex equivalent would be .*, where . is a special character mean "match anything". But I'd try something a little trickier, to match > so that part of the regex doesn't scan outside the tag it started in. [] let you specify a range to include or exclude. [A-Z] would match a single letter in A-Z range. [^A-Z] would match a single character not in the A-Z range. [^>] would match anything that's not an end-of-tag character.

So, [^>]* would match zero or more non-> characters, swallowing up the rest of the tag and stopping right before >.

This works on the HTML you posted:
Code:
sed 's#<a href="files\\[^>]*><img src="thumbnails\\[^>]*></a>#<img src=redact.png>#g'

# 5  
Old 09-12-2013
Worked perfectly. Thank you for the help, and the lesson. I thought sed used bash's rules. Learn something new everyday.
This User Gave Thanks to twjolson For This Post:
# 6  
Old 09-12-2013
Look for 'POSIX regular expressions' to see exactly how sed and many other things match. BASH globbing is pretty limited in comparison. PERL regexes are similar to POSIX ones but even more plush.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to parse a specifc value between html tags using sed?

Hi, im trying to read a Temperature value from html code. So far i have managed to reduce the whole html page down to this single line with the following sed command:sed -n '/Temperature/p' $temp_temperature | tee temp_string <TD width='350'>Temperature :</td><td>25... (2 Replies)
Discussion started by: naittis
2 Replies

2. Shell Programming and Scripting

Replace HTML tags using sed regex

I need all the end tags of </font> to be replaced with new line yet enclosing tag to be retained </font>. Please help me in this regard. Input: <font>abc</font>def<font>ghi</font> Output: <font>abc</font> def <font>ghi</font> (3 Replies)
Discussion started by: Badhrish
3 Replies

3. Shell Programming and Scripting

help with sed needed to extract content from html tags

Hi I've searched for it for few hours now and i can't seem to find anything working like i want. I've got webpage, saved in file par with form like this: <html><body><form name='sendme' action='http://example.com/' method='POST'> <textarea name='1st'>abc123def678</textarea> <textarea... (9 Replies)
Discussion started by: seb001
9 Replies

4. Shell Programming and Scripting

Replacing variable values in html tags

Hi please help me with this . I have a file test.txt with following content $cat test.txt <td>$test</td> <h2>$test2</h2> and I have a ksh with following content $cat test.ksh #!/bin/ksh test=3 test2=4 while read line do echo $line done < test.html I am expecting the output as (4 Replies)
Discussion started by: panduandpavan
4 Replies

5. Shell Programming and Scripting

searching & replacing/removing only certain HTML tags

I generally save a lot of web pages for reading offline which works out great for school. Now I have to spend a lot of time on the bus and I am looking for the best way to read some of these webpages using my Nokia 7610. I have uploaded the files to my phone, but they are deadly deadly slow to... (2 Replies)
Discussion started by: naphelge
2 Replies

6. Shell Programming and Scripting

sed - striping out html tags

I have pasted the contents of a log file (swmbackup.wrkstn.1262071383.sales2a) below: Workstation: sales2a<BR Vault sales2a-hogwarts will be initialized.<BR <font color="red"There was a problem mounting /mnt/sales2a/desktop$ </FONT<BR <font color="red"There was a problem mounting... (4 Replies)
Discussion started by: bigtonydallas
4 Replies

7. Shell Programming and Scripting

Replace space, that is not in html tags <> with new line using sed

Hi, I am working on transforming html code text into the .vert text format. I want to use linux utility sed. I have this regexp which should do the work: s/ \(?!*>\)/\n/g. I use it like this with sed: echo "you <we try> there" | sed 's/ \(?!*>\)/\n/g' ... The demanded output should be: you <we... (5 Replies)
Discussion started by: matt1311
5 Replies

8. Shell Programming and Scripting

Problem with 'sed' command while using HTML tags

Hello, I am using sed as follows - sed 's/CONTACT SYSTEMS! Some payments have been rejected/<B><font color="red" size="5.0pt"CONTACT SYSTEMS! Some payments have been rejected</font></B>/' $REPORT_FILE But while executing this, I am getting the error as - sed: command garbled &... (5 Replies)
Discussion started by: The Observer
5 Replies

9. Shell Programming and Scripting

How to supplement HTML tags with SED

I am cleaning up HTML with sed. With the regexp <a name="+"></a><h>*<span class="mw-headline" >+</span></h> I can find the tags I need. But when I place them in a sed command, sed fails. So I started building up from a smaller command. This is where I am now: sed -r -e s/"<a... (3 Replies)
Discussion started by: DocBrewer
3 Replies

10. Shell Programming and Scripting

unsing sed to strip html tags - help

Hi, I am trying to strip html tags of a string for example <TD>no problem</TD> the sesult should be no problem but could never get rid off all the tags sed 's/<..D>//g' Please help, I am new (3 Replies)
Discussion started by: zap
3 Replies
Login or Register to Ask a Question