首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过bash从html中提取信息

通过bash从html中提取信息
EN

Stack Overflow用户
提问于 2012-07-02 18:21:42
回答 2查看 1.4K关注 0票数 0

我正在尝试写一个bashscript,可以从一个大的html文件中提取信息。我需要它每天早上自动下载最新的报纸:)。要下载最新的报纸,我必须知道它的ID。为了获得它,我必须解析指向它的链接。我设法提取了保存带有awk的id的行

代码语言:javascript
复制
awk '/show.php\?id=/' index.html

并获取

代码语言:javascript
复制
<a href="show.php?id=914826">Latest Newspaper</a>

所以我需要的是"914826“。这就是我被困的地方..。我不认为我可以使用awk来提取整行代码,而是提取一个片段。

期待你的回答。提前谢谢你,西蒙

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-02 18:58:59

这个完整的awk命令应该可以工作。对于与正则表达式匹配的行,在="中拆分。在您的示例行中像这样拆分:

第一个字段将是:<a href=

  • Second字段:
  • 第三个字段:<a href=
  • Second字段:<a href=
  • Second:914826
    • And
    • >Latest Newspaper</a>

所以打印第四个(arr[4]):

代码语言:javascript
复制
awk '
    /show.php\?id=/ { 
        split( $0, arr, /[="]/ ); 
        print arr[4] 
    }
' index.html
票数 1
EN

Stack Overflow用户

发布于 2012-07-02 18:25:24

使用grep

代码语言:javascript
复制
grep -o 'id=[0-9]*'

示例:

代码语言:javascript
复制
$ echo '<a href="show.php?id=914826">Latest Newspaper</a>' | grep -o 'id=[0-9]*'
id=914826

您可以使用perl或sed执行相同的操作:

代码语言:javascript
复制
$ echo '<a href="show.php?id=914826">Latest Newspaper</a>' | perl -pe 's/.*id=([0-9]*).*/$1/'
914826
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11291779

复制
相关文章

相似问题

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