grep 如何仅从网站中提取 link
grep Howto extract a link only from a webseite
我进行了很多搜索,但没有任何东西真正帮助我找到问题的解决方案。我仍在学习正则表达式并取得了一些成功,但在这种情况下我无法获得我想要的解决方案。
我正在编写脚本来为我们的安装服务器实现安装包。它应该下载最新的 setup.exe 并打包一个新的包,以便它可以部署到客户端。
我尝试下载一个网站并在其中找到正确的 link:
wget --no-check-certificate https://www.thunderbird.net/en-US/thunderbird/all/ -q -O- | grep -o https://download\.mozilla\.org/\?product=thunderbird-.*-SSL\&os=win64\&lang=de
它将忽略版本号,并且在我通往最终解决方案的过程中运行良好。结果是:
https://download.mozilla.org/?product=thunderbird-91.6.0-SSL&os=win64&lang=de
https://download.mozilla.org/?product=thunderbird-91.6.0-msi-SSL&os=win64&lang=de
但我需要的只是 https://download.mozilla.org/?product=thunderbird-91.6.0-SSL&os=win64&lang=de
我知道我可以对“91.6.0”进行正则表达式处理,但如果 91 变成 >100 会怎么样?如果一个版本是 95.4.0.2(例如)怎么办?
感谢您的帮助。
丹妮丝
您可以使用 [^-]*
否定括号表达式排除 thunderbird-
和 -SSL
之间的连字符:
https://download\.mozilla\.org/\?product=thunderbird-[^-]*-SSL\&os=win64\&lang=de
参见regex demo。
您也可以只匹配数字或点 [0-9.]*
:
https://download\.mozilla\.org/\?product=thunderbird-[0-9.]*-SSL\&os=win64\&lang=de
我进行了很多搜索,但没有任何东西真正帮助我找到问题的解决方案。我仍在学习正则表达式并取得了一些成功,但在这种情况下我无法获得我想要的解决方案。
我正在编写脚本来为我们的安装服务器实现安装包。它应该下载最新的 setup.exe 并打包一个新的包,以便它可以部署到客户端。
我尝试下载一个网站并在其中找到正确的 link:
wget --no-check-certificate https://www.thunderbird.net/en-US/thunderbird/all/ -q -O- | grep -o https://download\.mozilla\.org/\?product=thunderbird-.*-SSL\&os=win64\&lang=de
它将忽略版本号,并且在我通往最终解决方案的过程中运行良好。结果是:
https://download.mozilla.org/?product=thunderbird-91.6.0-SSL&os=win64&lang=de
https://download.mozilla.org/?product=thunderbird-91.6.0-msi-SSL&os=win64&lang=de
但我需要的只是 https://download.mozilla.org/?product=thunderbird-91.6.0-SSL&os=win64&lang=de
我知道我可以对“91.6.0”进行正则表达式处理,但如果 91 变成 >100 会怎么样?如果一个版本是 95.4.0.2(例如)怎么办?
感谢您的帮助。
丹妮丝
您可以使用 [^-]*
否定括号表达式排除 thunderbird-
和 -SSL
之间的连字符:
https://download\.mozilla\.org/\?product=thunderbird-[^-]*-SSL\&os=win64\&lang=de
参见regex demo。
您也可以只匹配数字或点 [0-9.]*
:
https://download\.mozilla\.org/\?product=thunderbird-[0-9.]*-SSL\&os=win64\&lang=de