使用正则表达式获取最新的pip包版本

使用正则表达式获取最新的pip包版本

我正在尝试解析此 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

仅使用 GNU正则表达式引擎:

命令行

pip ... |& grep -oP '.*\b\K\d+\.\d+\.\d+\b'

输出

19.9.0

关于正则表达式的说明

查看正则表达式101解释

答案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 排序都是如此。我不知道其他人是否也这样做。

相关内容