首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用包含单行重复项的sed/grep从标记文件中提取图像URI

使用包含单行重复项的sed/grep从标记文件中提取图像URI
EN

Stack Overflow用户
提问于 2021-01-19 21:48:35
回答 1查看 320关注 0票数 1

我有一些标记文件要处理,其中包含链接到图片,我想下载。例如,减价档案:

代码语言:javascript
复制
[![](https://imgs.xkcd.com/comics/git.png)](https://imgs.xkcd.com/comics/git.png)

a lot of text 
some more text...

[![](https://1.bp.blogspot.com/-Ze2SiBflkZ4/XbtF1TjELcI/AAAAAAAALL4/IDC6W-b5moU0eGu2eN60aZ4pxfXW1ybmQCLcBGAsYHQ/s320/take_a_break_git.gif)](https://1.bp.blogspot.com/-Ze2SiBflkZ4/XbtF1TjELcI/AAAAAAAALL4/IDC6W-b5moU0eGu2eN60aZ4pxfXW1ybmQCLcBGAsYHQ/s1600/take_a_break_git.gif)


some more text

another URL but not image
[https://github.com]

so on

我试图解析这个文件并提取图像URL列表,稍后我可以通过wget命令下载该列表。

到目前为止,我已经使用了grepsed,并得到了结果:

代码语言:javascript
复制
$ sed -nE "/https?:\/\/[^ ]+.(jpg|png|gif)/p" $path
[![](https://imgs.xkcd.com/comics/git.png)](https://imgs.xkcd.com/comics/git.png)
[![](https://1.bp.blogspot.com/-Ze2SiBflkZ4/XbtF1TjELcI/AAAAAAAALL4/IDC6W-b5moU0eGu2eN60aZ4pxfXW1ybmQCLcBGAsYHQ/s320/take_a_break_git.gif)](https://1.bp.blogspot.com/-Ze2SiBflkZ4/XbtF1TjELcI/AAAAAAAALL4/IDC6W-b5moU0eGu2eN60aZ4pxfXW1ybmQCLcBGAsYHQ/s1600/take_a_break_git.gif)

$ grep -Eo "https?://[^ ]+.(jpg|png|gif)" $path
https://imgs.xkcd.com/comics/git.png)](https://imgs.xkcd.com/comics/git.png
https://1.bp.blogspot.com/-Ze2SiBflkZ4/XbtF1TjELcI/AAAAAAAALL4/IDC6W-b5moU0eGu2eN60aZ4pxfXW1ybmQCLcBGAsYHQ/s320/take_a_break_git.gif)](https://1.bp.blogspot.com/-Ze2SiBflkZ4/XbtF1TjELcI/AAAAAAAALL4/IDC6W-b5moU0eGu2eN60aZ4pxfXW1ybmQCLcBGAsYHQ/s1600/take_a_break_git.gif

regex本质上运行良好,但问题是,由于相同的URL在同一行中出现了两次,所选文本是https的第一次出现和最后一次出现jpg|png|gif。但我要的是https的第一次出现和jpg|png|gif的第一次发生

怎么才能解决这个问题?

P.S.我也尝试过lynx -dump -image_links -listonly $path,但这会打印出整个文件。

我也对解决这个问题的其他选项持开放态度,只要我能够将代码连接到我当前的shell脚本中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-19 21:52:09

您可以在否定的括号表达式中添加方括号:

代码语言:javascript
复制
grep -Eo "https?://[^][ ]+\.(jpg|png|gif)"

在线演示。详细信息

  • https?:// - http://https://
  • [^][ ]+ - ][和space以外的一个或多个字符
  • \. -a点
  • (jpg|png|gif) -三种替代子字符串中的一种。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65800023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档