grep 所有 Gentoo Stage3 链接到终端

grep all Gentoo Stage3 links to the terminal

我想将 https://www.gentoo.org/downloads/mirrors/ 中的所有 link 显示到终端。

首先,脚本会将网页 wget 保存到名为 index.html 的文件中,然后 grepsed 命令将简单地显示所有 https://http://ftp:// 到终端。

有人可以帮我这个命令吗?我知道这很简单,但我对这两个命令都不熟悉。

我尝试了什么: grep "<code>" index.html

输出:

              <a href="ftp://mirrors.tera-byte.com/pub/gentoo"><code>ftp://mirrors.tera-byte.com/pub/gentoo</code></a>
              <a href="http://gentoo.mirrors.tera-byte.com/"><code>http://gentoo.mirrors.tera-byte.com/</code></a>
              <a href="rsync://mirrors.tera-byte.com/gentoo"><code>rsync://mirrors.tera-byte.com/gentoo</code></a>

如何删除 link 之后的空格、标签和所有不必要的文本?

您可以将 grep 与此模式一起使用:

grep -Po "(?<=<code>)(https?|ftp)(.*)(?=<\/code>)" index.html

前 3 行输出:

ftp://mirrors.tera-byte.com/pub/gentoo
http://gentoo.mirrors.tera-byte.com/
ftp://mirror.csclub.uwaterloo.ca/gentoo-distfiles/

如果您只想保留域 link,可以试试这个 grep

grep -Eo '[h|f]t*ps?://.[^<|>|"]*' index.html

这将仅显示 httphttpsftp 个匹配项

如果需要在 <code> 个块内进行匹配,这个 sed 就可以了

sed -En '/<code>/ {s|.*([h|f]t*ps?://.[^<|>|"]*).*||p}' index.html