grep または sed を使用して HTML からリンクをフィルターする方法は?

grep または sed を使用して HTML からリンクをフィルターする方法は?

srcWeb ページの HTML から属性に関連するリンクをフィルター処理しようとしています。

curl以前は、HTML と以下のコマンドを使用してsedURL リンクをフィルターしていました。

curl -s http://www.example.com/ | sed -n '/src/,/jpg/p'

src私の考えは、拡張子で始まり拡張子で終わる行をフィルタリングすることでした.jpg。しかし、それは機能せず、HTML 全体が出力されます。どうすればこれを実行できますか?

答え1

次のコマンドを試してください:

curl -s http://www.example.com | grep -Po '(?<=src=")[^"]*(jpg|png)'

説明:

からman grep

   -o, --only-matching
          Print only the matched (non-empty) parts of a matching line,
          with each such part on a separate output line.
   -P, --perl-regexp
          Interpret PATTERN as a Perl compatible regular expression (PCRE)

後読みは(?<=src=)、文字列の現在の位置で、先行するのは文字であると主張します。次に、 jpg または png で終わるものsrc=を除くすべてを検索します。"

関連情報