주어진 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>
두 가지 질문이 있습니다.
sed
또는 를 사용하여 이 작업을 수행할 수 있습니까perl
?- 이러한 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>