2017-02-23 55 views
0

作为学习bash脚本的项目的一部分,我正在撰写RSS Podcast下载程序。我已经看到很多使用cURL,wget等工具的例子,并进一步使用grep,sed和awk解析XML。这是从commandlinefu这个工作的一个班轮。Podcast下载程序

curl $1 | grep -E "http.*\.mp3" | sed "s/.*\(http.*\.mp3\).*/\1/" | xargs wget 

这是解析RSS寻找MP3的最有效方法吗? RSS提要包含数百个MP3的链接,我的下一个目标是仅下载最新的10个。

+0

我的困惑的一部分是何时使用grep/sed/awk进行解析。 – Heisenberg

回答

1

从广义上讲,使用XML RSS格式,您可以使用xpath实用程序来选择所需的特定节点。

如果示例sed说法是,一个偶然的机会,生产MP3的URL的有序列表,你可以使用headtail公用事业拉出第一个或最后10个项目(根据排序顺序)。但是,请注意,在不使用XML识别解析器的情况下盲目解析提要可能会导致一个脆弱的解决方案。

没有更多细节,很难更具体。

+0

有兴趣知道为什么我应该使用xml解析器。我倾听这篇文章 - http://podcast.securityweekly.com/ - 特别是“安全周刊”和“企业安全周刊”播客。我想相应地制作我的剧本到最新的剧集。这是我计划用bash编写的东西,然后在Python中进行复制以尝试学习脚本语言。如果我遇到头痛的问题,那么我将需要考虑跳过Python。 – Heisenberg

+0

@Heisenberg如果您看到Feed,您会注意到它使用了XML格式:'<?xml version =“1.0”encoding =“UTF-8”?>'。我误解你的问题吗?我希望你可以用bash脚本或Python来实现你的目标。 – user650881

+0

安全周刊使用RSS v.2.0。在此之前,我并没有完全理解XML和RSS之间的区别。 – Heisenberg