如何使用带有 apt-cache 搜索的正则表达式来查找所有 Wine 版本?

如何使用带有 apt-cache 搜索的正则表达式来查找所有 Wine 版本?

我正在编写一个脚本来安装一些东西,但我使用的正则表达式有问题。我的 apt 源 (ppa:ubuntu-wine/ppa) 中有 Wine 存储库,我正在使用以下命令:

apt-cache search wine[0-255].[0-255] | sort -nr

现在我希望将“wine1.7”放在列表顶部,但它甚至没有列出。

相反,如果我运行:

apt-cache search wine | sort -nr

我得到了一个更长的列表(显然),它包含“wine1.7”。失败的列表确实显示了一些与我的正则表达式匹配的正确项目,但没有没有正则表达式的那么多。以下是几个例子:

  • wine1.7-i386——Microsoft Windows 兼容层(支持 32 位)
  • wine1.7-amd64——Microsoft Windows 兼容层(支持 64 位)
  • wine1.5——Microsoft Windows 兼容层(虚拟包)
  • wine1.5-i386——Microsoft Windows 兼容层(支持 32 位)
  • wine1.5-dev——Microsoft Windows 兼容层(支持 64 位)

如您所见,“wine1.5”是列表,但“wine1.7”不是。有没有更好的方法来获取这种类型的列表?

或者更好的是从列表中找到要安装的最新版本的简单方法?

答案1

字符类的工作方式并非如此,正则表达式不会区分262后跟6,因此您的字符类被解释为1-25。此外,.表示“匹配任何字符”,而不是文字.,我认为apt正则表达式引擎不允许转义,因此您必须使用字符类来匹配它([.])。最后,您需要每个数字出现多次,因此您需要类似以下内容:

apt-cache search --names-only wine[0-9]+[.]*[0-9]*

确保--names-only您的正则表达式仅与包名称匹配,而不是描述。

相关内容