如何在shell中从字符串中提取数字[duplicate]

8fsztsew  于 2022-11-04  发布在  Unix
关注(0)|答案(4)|浏览(199)

此问题在此处已有答案

How to split a string into an array in Bash?(24个答案)
四个月前关门了。
我试图从shell中的字符串中提取数字,字符串为“1.69.0”

string="1.69.0"

我在3个不同的变量中寻找这些数字,如num1=1,num2=69,num3=0。

plupiseo

plupiseo1#

请参阅here

str="1.69.0"
IFS=. read -r -a num <<<"$str"
echo "${num[0]}"
echo "${num[1]}"
echo "${num[2]}"
ilmyapht

ilmyapht2#

在bash中,可以通过以下方式将版本号存储在列表中:

version="2.3.5-0041"
version_list=( ${version//[-.]/${IFS:0:1}} )
echo "Major release: ${version_list[0]}"
echo "Minor release: ${version_list[1]}"
echo "Patch level  : ${version_list[2]}"
echo "Build number : ${version_list[3]}"
juzqafwq

juzqafwq3#

不如

if [[ $string =~ ^([[:digit:]]+)[.]([[:digit:]]+)[.]([[:digit:]])$ ]]
then
  first_num=${BASH_REMATCH[1]}
  second_num=${BASH_REMATCH[2]}
  third_num=${BASH_REMATCH[3]}
else
  echo Invalid content: "'$string'" 1>&2
fi

这也将验证X1MON1X确实具有期望的格式。

dgiusagp

dgiusagp4#

也许吧

$ eval "m=($(echo $string | tr '.' ' '))"
$ echo ${m[*]}
1 69 0

这假定所有字符串都是类似的'.'分隔符

相关问题