匹配字符串bash后获取数字

时间:2015-08-26 15:00:03

标签: linux bash awk sed

我有一些用户可以传递给命令的参数,但我需要获取特定字符串后面的数字。

以下是我传递给bash脚本的参数的一些示例

 xxx.sh   cpus="12" memory="1500mb"
 xxx.sh  -cpus 12 -memory 1500mb
 xxx.sh  cpus=12 memory=1500mb

我想搜索第一次出现的cpus并返回数字12.

该数字可以是1到1000之间的任何数字。

1 个答案:

答案 0 :(得分:0)

您可以在脚本中使用此正则表达式:

[[ $* =~ cpus[^[:digit:]]*([[:digit:]]+) ]] && echo "${BASH_REMATCH[1]}"

RegEx Demo

这将为您问题中显示的所有命令行参数打印12

这将匹配cpus后跟0或更多非数字,然后匹配并捕获捕获的组#1中的1个或多个数字,即"${BASH_REMATCH[1]}"

相关问题