如何从字符串中提取版本号

如何从字符串中提取版本号

我是 UNIX 新手。

我有一个案例,我想从这些字符串(一次一个字符串)中提取版本号,如下所示,我应该怎么做?

release-2.15-5 > 2.15
release-2.15 > 2.15
2.15 > 2.15
2.15-5 > 2.15

我已经这样做了echo release-2.15-5 | cut -f1 -d'-',但结果不正确

答案1

鉴于没有那么多上下文,我建议您检查grep提取此类信息的说明。例如,如果您的输入只是这种类型,您可以grep按以下方式使用:

grep -Eo '[0-9]\.[0-9]+' filename 

在哪里:

  • -E是指示我们将使用扩展正则表达式的标志(检查这里了解更多信息)

  • -o是指定我们只需要在找到时返回精确匹配的标志

  • [0-9]\.[0-9]+是一个正则表达式,表示我们需要一个数字后跟一个点,然后是一个或多个尾随数字。请注意,点字符必须转义。否则,普通的点 ie.将被视为“任意字符”。

  • filename是 grep 的输入

在您的示例中,这将返回以下内容:

2.15
2.15
2.15
2.15

另一方面,如果您只需要其中一个匹配项,那么您也可以使用head管道连接到 grep,如下所示:

grep -Eo '[0-9]\.[0-9]+' filename | head -1

相关内容