我正在尝试解析此 pip install 的输出以获取最新的软件包版本。
pip install package==
ERROR: Could not find a version that satisfies the requirement package== (from versions: 19.2.0, 19.5.0, 19.6.1, 19.7.0, 19.7.1, 19.8.0, 19.9.0)
应该使用 bash 命令(sed、awk 或 grep)来完成。我使用 regexr.com 验证以下表达式,它突出显示给定输出的所有版本。
(?:(\d+)\.)?(?:(\d+)\.)?(?:(\d+)\.\d+)
但我无法让这个正则表达式与 sed/awk 一起使用。
答案1
以一种不太复杂的方式,如果您刚刚使用最新版本的 pip,则可以使用cut
.
Pip show pip | grep Version: | cut -d' ' -f2
将导致:
19.9.0
答案2
命令行
pip ... |& grep -oP '.*\b\K\d+\.\d+\.\d+\b'
输出
19.9.0
关于正则表达式的说明
答案3
$ echo 'ERROR: Could not find a version that satisfies the requirement package== (from versions: 19.2.0, 19.5.0, 19.6.1, 19.7.0, 19.7.1, 19.8.0, 19.9.0)' | \
sed -e 's/^.*versions: //; s/, /\n/g; s/)//' | \
sort -V | tail -n1
19.9.0
-V
这需要一个能够理解(又名--version-sort
)选项的 sort 版本。 GNU 排序和 FreeBSD 排序都是如此。我不知道其他人是否也这样做。