如何使用grep/sed提取Gentoo镜像页的http/https/ftp链接输出到终端
提取指定页面链接的实现方案
操作步骤
- 首先下载目标页面到本地
命令:wget https://www.gentoo.org/downloads/mirrors/ -O index.html - 提取纯净链接
你之前执行grep输出多余内容,是因为默认grep会输出匹配到的整行内容,加上-o参数后只会返回你要匹配的链接片段,就不会有多余的HTML标签和空格了。
方案1:使用grep实现(操作更简单)
直接执行以下命令即可输出所有符合要求的纯净链接:grep -Eo '(http|https|ftp)://[^"]+' index.html | sort -u
方案2:使用sed实现
sed -n 's/.*href="\((http\|https\|ftp\):\/\/[^"]*\)".*/\1/p' index.html | sort -u
命令说明
-E(grep参数):启用扩展正则表达式,减少特殊字符转义操作-o(grep参数):仅输出匹配到的内容片段,不会输出整行的HTML代码[^"]+:正则匹配规则,匹配除双引号外的所有连续字符,刚好可以完整提取HTML中href属性内的链接sort -u:对输出结果去重,避免同一个链接重复展示
免存文件一步执行方案
不需要把页面存为本地文件,直接通过管道操作即可完成全部流程:wget -qO - https://www.gentoo.org/downloads/mirrors/ | grep -Eo '(http|https|ftp)://[^"]+' | sort -u
内容的提问来源于stack exchange,提问作者user15885911
相关产品推荐
相关产品推荐

