为什么 sed 命令在尝试提取 scala 版本号时不起作用

Why sed command doesn't work trying to extract scala version number

我正在尝试使用 sed 提取 Scala 主要版本,但它 returns 返回相同的字符串。我不确定。

scala 版本:

scala -version
> Scala code runner version 2.13.7 -- Copyright 2002-2021, LAMP/EPFL and Lightbend, Inc.

尝试过的sed命令是:

scala -version | sed 's/.*version \([0-9]*\.[0-9]*\).*//'
> Scala code runner version 2.13.7 -- Copyright 2002-2021, LAMP/EPFL and Lightbend, Inc.

截图:

但是当我使用 this website 测试我的正则表达式时,它是一个 sed 游乐场。

您的 tried/attempted 代码中有 2 个问题。第 1:您是否需要将 scala --version 输出发送到 2>&1(检查 link 以便更好地理解它)。第二:你的正则表达式没有捕捉到 scala 的确切版本,所以你需要对其进行一些增强,请尝试按照 sed 命令进行相同的操作。

scala -version 2>&1 | sed 's/.*version \([0-9]*\.[0-9]*\.[0-9]*\).*//'

OR 作为替代方案,您还可以使用以下 sed 命令:

scala -version 2>&1  | sed -E -n 's/.*version\s+([0-9]+)(\.[0-9]+){2}.*//p'