如何使用 grep 或 sed 从 html 中过滤掉链接?

如何使用 grep 或 sed 从 html 中过滤掉链接?

src我正在尝试从网页的 html 中过滤与属性相关的链接。

我曾经curl获取 html 和下面的sed命令来过滤 url 链接。

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=)断言在字符串的当前位置,前面是字符src=。然后我们寻找除了"以 jpg 或 png 结尾的所有内容。

相关内容