从 curl 的输出中提取模式

use*_*579 5 regex curl

我想在命令行上使用 curl 来获取一个 url,将其通过管道传输到一个模式,然后返回一个与该模式匹配的 url 列表。

我遇到了模式贪婪方面的问题,似乎无法解决它。对此的任何帮助将不胜感激。

curl http://www.reddit.com/r/pics/ | grep -ioE "http://imgur\.com/.+(jpg|jpeg|gif|png)"
Run Code Online (Sandbox Code Playgroud)

因此,从 url 获取数据,它返回一堆 html,可能需要以某种方式替换一些换行符,除非正则表达式可以在一行中返回多个模式。模式非常简单,任何匹配的字符串......

  • http://imgur.com/开头
  • 有 AZ az 0-9(可能还有其他一些),到目前为止,5 个字符长,如果我想限制模式的那个方面,8 个字符应该永远覆盖它,我不这样做
  • 以 .graphic_file_format_extention 结尾(jpg、jpeg、gif、png)

就是这样,在那个 url 上,使用默认设置,我通常应该得到一组好的图像。我不会反对在同一页面上使用 RSS 感觉 url,实际上它可能更容易解析。

谢谢大家!

编辑 感谢您的快速回答,我现在的最终命令是:

$curl -s http://www.reddit.com/r/pics/ | grep -ioE "http:\/\/imgur\.com\/.{1,10}\.(jpg|jpeg|gif|png)"
Run Code Online (Sandbox Code Playgroud)

Ben*_*Ben 3

尝试:

http:\/\/imgur\.com\/.{5,8}\.(jpg|jpeg|gif|png)
Run Code Online (Sandbox Code Playgroud)