如何在Shell脚本中解析字符串

pan*_*naj 4 shell

我想在 shell 脚本中解析以下字符串。

VERSION=2.6.32.54-0.11.def
Run Code Online (Sandbox Code Playgroud)

这里我想得到两个值。

first = 263254
second = 11
Run Code Online (Sandbox Code Playgroud)

我使用以下方法来获取第一个值:

first=`expr substr $VERSION 1 9| sed "s/\.//g" |sed "s/\-//g"`
Run Code Online (Sandbox Code Playgroud)

得到第二个:

second=`expr substr $VERSION 10 6| sed "s/\.//g" |sed "s/\-//g"`
Run Code Online (Sandbox Code Playgroud)

使用上面的代码输出是:

first=263254
second=11
Run Code Online (Sandbox Code Playgroud)

如果版本更改为:结果将不一致:

VERSION=2.6.32.54-0.1.def
Run Code Online (Sandbox Code Playgroud)

这里第二个值将变成 1d,但我希望它只给出 1 的输出。

如何直接解析“-”之后和“.d”之前的数字?

小智 5

$ first=$(echo $VERSION | cut -d- -f1 | sed 's/\.//g')
$ second=$(echo $VERSION | cut -d- -f2 | cut -d. -f2)
Run Code Online (Sandbox Code Playgroud)