【问题标题】:Extract a pattern from the output of curl从 curl 的输出中提取模式
【发布时间】:2010-04-25 04:14:29
【问题描述】:

我想在命令行上使用 curl 来获取一个 url,将它传递给一个模式,并返回一个与该模式匹配的 url 列表。

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

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

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

  • http://imgur.com/开头
  • 有 A-Z a-z 0-9(可能还有其他一些),到目前为止,5 个字符长,如果我想限制模式的那个方面,8 应该永远覆盖它,我不这样做
  • 以 .grraphic_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)"

【问题讨论】:

  • 您愿意使用真正的 XML 库吗? reddit.com/r/pics/.rss 不是很有效的 RSS,但它是格式良好的 XML。
  • 我有点想只“单线”这个。它只是一个我想不时运行的命令,我将把它包装在一个 bash for 循环中,然后删除一个大约 10 张图片的目录。

标签: regex curl


【解决方案1】:

试试:

http:\/\/imgur\.com\/.{5,8}\.(jpg|jpeg|gif|png)

【讨论】:

  • 谢谢,我尝试编辑原件,这是我的最终命令:$curl -s reddit.com/r/pics | grep -ioE "http:\/\/imgur\.com\/.{1,10}\.(jpg|jpeg|gif|png)"
【解决方案2】:

酷。从 URL 中获取您的 WAN IP:

curl -s https://hostpapastatus.com/ip/ | grep -ioE "([0-9]{1,3}[\.]){3}[0-9]{1,3}"

【讨论】:

    猜你喜欢
    • 2017-01-14
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    相关资源
    最近更新 更多