HTML から URI を抜き出す
これは awk を使っている時に参考になる質問かな。
以下のような HTML の場合に拡張子が ext のものの URI を抜き出すというものです。
<html> <body> <!-- some messy code with many tags like <a href="http://www.somesite.com/somepath/somefile.ext">link</a> --> </body> </html>
Tiago Peczenyj の回答が分かりやすいです。徐々に解読しているような方法です。
最初に RS を決めます。
$ awk -v RS='[<>]' '/^a href=/' data a href="http://www.somesite.com/somepath/somefile.ext"
次に FS を指定します。
$ awk -v RS='[<>]' -F\" '/^a href=/{ print $2 }' data http://www.somesite.com/somepath/somefile.ext
最後に拡張子で判定しています。
$ awk -v RS='[<>]' -F\" '/^a href=/ && $2 ~ /ext$/ { print $2 }' data http://www.somesite.com/somepath/somefile.ext
また lynx を使うというものもあります。日本なら w3m でしょうか。
$ lynx --dump a.html [1]link References 1. http://www.somesite.com/somepath/somefile.ext
このようにして一度テキストにしてしまった後に awk で処理をすれば楽だという話のようです。HTML を Plain Text にする場合や、逆に HTML をパースしたいときにも w3m は役に立ってくれますね。