コメントで述べたように、通常、正規表現を使用してHTMLを解析することはお勧めできませんが、解析しているHTMLが適切に動作している場合は、それを回避できます。
要素のhref
属性にあるURLのみを取得<a>
するには、複数の段階で実行するのが最も簡単です。コメントから、完全なURLではなく、トップレベルドメインのみが必要なようです。その場合、次のようなものを使用できます。
grep -Eoi '<a [^>]+>' source.html |
grep -Eo 'href="[^\"]+"' |
grep -Eo '(http|https)://[^/"]+'
どこsource.html
解析するHTMLコードを含むファイルです。
このコードは、各行の要素のhref
属性として発生するすべてのトップレベルURLを出力します<a>
。-i
最初のgrep
コマンドのオプションは<a>
、<A>
要素と要素の両方で機能することを確認することです。大文字の属性OTOH をキャプチャ-i
するために2番目grep
に渡すこともできるHREF
と思います。このような壊れたHTMLは無視したほうがいいでしょう。:)
の内容を処理するには http://google.com/
wget -qO- http://google.com/ |
grep -Eoi '<a [^>]+>' |
grep -Eo 'href="[^\"]+"' |
grep -Eo '(http|https)://[^/"]+'
出力
http://www.google.com.au
http://maps.google.com.au
https://play.google.com
http://www.youtube.com
http://news.google.com.au
https://mail.google.com
https://drive.google.com
http://www.google.com.au
http://www.google.com.au
https://accounts.google.com
http://www.google.com.au
https://www.google.com
https://plus.google.com
http://www.google.com.au
オーストラリアのGoogleページにリダイレクトされるため、私の出力は他の例とは少し異なります。