0

と呼ばれる非常に基本的なhtmlファイルがありますexample.html(以下を参照)

<html>
<body>
<div class="one">
    <div class="research">
        <div class="two">
            <p>Lorem ipsum...</p>
        </div>
        <div class="three">
            <p>Lorem ipsum...</p>
        </div>
        <div class="four">
            <p>Lorem ipsum...</p>
        </div>
    </div>  
</div>
</body>
</html>

そして、(以下を参照)のようなフレーズのみを取得したいのですが、最初と最後の3行を削除することはできません。

<div class="research">
    <p>Lorem ipsum...</p>
    <div class="two"></div>
    <div class="three"></div>
    <div class="four"></div>
</div>

私は試してみましたawk

cat example.html | awk '/^<div\ class="research">$/,/^<\/div>$/ { print }'

しかし、何かが間違っているようです。

タグも試してみましたbody(下記参照)

cat example.html | awk '/^<body>$/,/^<\/body>$/ { print }'

(結果)

<body>
<div class="one">
    <div class="research">
        <div class="two">
            <p>Lorem ipsum...</p>
        </div>
        <div class="three">
            <p>Lorem ipsum...</p>
        </div>
        <div class="four">
            <p>Lorem ipsum...</p>
        </div>
    </div>  
</div>
</body>

そして、それは正しく機能しています。

私は何を間違っていますか?

前もって感謝します。

4

1 に答える 1

6

正規表現を使用して HTML を解析することはできません。html が有効な xml であると仮定すると、次を使用できます。

xmlstarlet sel -t -c '//div[@class="research"]' -nl example.html  
<div class="research">
        <div class="two">
            <p>Lorem ipsum...</p>
        </div>
        <div class="three">
            <p>Lorem ipsum...</p>
        </div>
        <div class="four">
            <p>Lorem ipsum...</p>
        </div>
    </div>
于 2013-08-29T18:56:11.500 に答える