Script para remover determinados elementos de span de um arquivo HTML

1

Eu quero escrever um script que remova completamente todas as instâncias de uma determinada classe de extensão de um determinado arquivo HTML.

Por exemplo, se minha classe de span indesejada for "foo" , então, executando meu script no arquivo

<html>
  <head>
    <title>hello world</title>
  </head>
  <body>
lorem ipsum
<span class="foo"> STUFF </span>
alpha beta <span class="foo"> MORE 
STUFF</span>
  </body>
</html>

deve render

<html>
  <head>
    <title>hello world</title>
  </head>
  <body>
lorem ipsum
alpha beta 
  </body>
</html>

Eu tenho duas perguntas.

  1. Isso pode ser feito com sed ou perl ?
  2. Existe uma ferramenta no Linux projetada para editar facilmente documentos HTML como este?
por Brian Fitzpatrick 24.08.2015 / 20:50

2 respostas

3

O Perl pode fazer isso, mesmo em quebras de linha.

Coloque isso em um arquivo (eu chamarei de example.html):

<p>Here is some <span>foo bar</span> example text.</p>
<p>Some text even <span>foo
bar</span> spans across line breaks.</p>

Então experimente:

$ perl -0777 -pe 's/<span.*?<\/span>//gs' example.html
<p>Here is some  example text.</p>
<p>Some text even  spans across line breaks.</p>
    
por 25.08.2015 / 00:01
2

Desde que seu HTML seja XML bem formado, você pode fazer isso com uma ferramenta de processamento XML, como xmlstarlet . Assumindo que o arquivo é original.html :

xmlstarlet ed -O -d '/html//span[@class = "foo"]' original.html

Saída

<html>
  <head>
    <title>hello world</title>
  </head>
  <body>
lorem ipsum

alpha beta
  </body>
</html>
    
por 12.03.2017 / 14:19