HTML 파일에서 특정 범위 요소를 제거하는 스크립트

HTML 파일에서 특정 범위 요소를 제거하는 스크립트

주어진 HTML 파일에서 특정 범위 클래스의 모든 인스턴스를 완전히 제거하는 스크립트를 작성하고 싶습니다.

"foo"예를 들어, 파일에서 스크립트를 실행하는 데 스팬 클래스가 필요하지 않은 경우

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

생산해야 한다

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

두 가지 질문이 있습니다.

  1. sed또는 를 사용하여 이 작업을 수행할 수 있습니까 perl?
  2. 이러한 HTML 문서를 쉽게 편집할 수 있는 도구가 Linux에 있습니까?

답변1

Perl은 개행 문자에서도 이를 수행할 수 있습니다.

이것을 파일로 덤프합니다(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>

그런 다음 다음을 시도하십시오.

$ 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>

답변2

HTML이 올바른 형식의 XML인 경우 XML 처리 도구를 사용할 수 있습니다(예: xmlstarlet파일이 다음과 같다고 가정 original.html).

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

산출

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

alpha beta
  </body>
</html>

관련 정보