有没有一种可移植的方法来提取部分格式化文本?

有没有一种可移植的方法来提取部分格式化文本?

我有一个程序(特别是)以、和均为数字的node --version形式输出文本。我想以可移植的方式从该字符串中提取主要版本,该方式适用于 Linux 和 OS X。我目前正在使用v<major>.<minor>.<patch><major><minor><patch>

grep -oP "(?<=v)(\d+)(?=.\d+.\d+)"

但看起来这在 OS X 上不起作用,因为它使用不同的标志。有没有一种方法可以在任一系统上执行此操作?

答案1

在 bash 中,您可以使用:

IFS='v.' read -r throwaway major minor patch < <(node --version)

该变量throwaway在初始 之前获得空白v。没有可用于测试的 OS X 机器,但这应该是很好的 bash 脚本。

答案2

受到 mikeserv 评论的启发,我现在使用以下命令执行此操作

node --version | cut -d. -f1 | cut -c2-

这使用带有.分隔符的 cut 来仅提取v<major>字符串。然后它再次使用 cut 来获取以第二个开头的所有字符,从而删除v.

这仅使用 coreutils(除了node),使其尽可能可移植。

相关内容