特定の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>
2つの質問があります。
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>