从本地 html 文件中解析出特定的 URL

从本地 html 文件中解析出特定的 URL

我想从保存的html-file 使用简单的 bash 脚本/命令,这样我就可以通过wgetlaters 下载它们。
到目前为止,我拥有的是:

awk 'BEGIN{ RS="<a *href *= *\""} NR>2 {sub(/".*/,"");print; }' index.html >> url-list.txt

它将我的 html 文件中的每个链接写入一个整洁的 txt 文档中。

然而我需要的只是特定的链接

  • 来自某个领域
  • 例如所有 .ogg 文件

最终的结果应该是这样的:

http://www.foo.com/(随机文件夹)/(随机基名).ogg

或者

http://subdomain.foo.com/(randomfolder)/(anotherrandomsubfolder)/(randombasename).ogg

提前致谢!

答案1

你说你需要“在 Bash 中”执行此操作,但你的意思似乎是“在脚本中”而不是“使用纯 Bash 语法”(有区别)。我猜你想要的是“在脚本中”的意思。


如果你已将所有链接保存在文档中的单独行上,则可以http://www.example.com/用以下方法找出域上的所有链接:

grep "^http://www\.example\.com/" filewithlinks.txt

或所有以 结尾的.ogg链接

grep "\.ogg$" filewithlinks.txt

(句点前的反斜杠是为了转义“ .”符号,该符号原本表示“任何字符”。而“ \.”则表示文字句点。如果不进行转义,您还将匹配以“logg”结尾的链接。)

您也可以直接在awk 命令中进行行匹配,但我认为这会更复杂,因为需要时不时地进行更改。最简单的方法是像您所做的那样将完整的链接列表保存在一个文件中,然后只需使用grep上述示例搜索文件即可。这样,如果您想更改匹配模式,您也不必再次下载和解析文档。

相关内容