1

私はかなり長い間この問題の解決策を探してきましたが、自分でそれを理解することはできません.

コードのHTMLブロックがたくさんあり、内側のタグの1つに含まれる特定の文字列を検索し、一致する場合は親タグの値を返したいと考えています。これが例です」

<li rel="Returns this value">
    <some other tags and elements here />
    <a class="link"><span>This match</span></a>
</li>

string を検索するThis matchと、 が返されReturns this valueます。これはawkで可能ですか?そうでない場合、これを達成する最も簡単な方法は何ですか? どんな解決策でもかまいませんが、awk または同様のコマンドライン ツールを使用することをお勧めします。私は Ubuntu サーバーで実行していて、root アクセス権を持っているので、必要に応じて、Ruby、Python、Perl、PHP などの他の言語に頼ることができます。

これまでのところ、span タグ間の文字列を検索し、その内容を返すことができました。ただし、単純な sed コマンドを使用するとはるかに簡単に実行できるため、まだあまり使用されていません。ただし、それでも役立つ可能性があり、必要なことを行うために改善される可能性があるため、次のようになります。

awk 'BEGIN{RS="";FS="</span>"}
/li/{
 for(i=1;i<=NF;i++){
    if($i ~ /span/){
        gsub(/.*span>/,"",$i)
        print $i
    }    
 } 
}'

上記の例で使用すると、 が返されThis matchます。提案をどうもありがとう。

4

1 に答える 1

2

一般に、正規表現で html を解析することはできません。

これは、awk で html を解析できないという意味ではありませんが、それは大きな仕事であり、誰かがそれを行っているとは聞いたことがありません。

ターゲットが明確に定義されていて、入力がかなり統一されていて、入力内のタグのネストについて特定のことを保証できる場合は、それを管理できる可能性があります。

ただし、ほとんどの場合、awk はこの仕事に適したツールではありません。HTML 解析エンジンが利用可能な言語を選択して、それを使用することをお勧めします。Perl、python、php、ruby...たくさんの選択肢があります。

于 2010-09-24T02:39:10.847 に答える