unixshell脚本:如何仅从包含数字和字符的变量中获取数字?

unixshell脚本:如何仅从包含数字和字符的变量中获取数字?,unix,unix-timestamp,unixodbc,Unix,Unix Timestamp,Unixodbc,如何从包含数字和字符的变量中仅获取数字 例如: 卡=3颗心 如何从变量$card中仅获取数字(3)?echo 3Hart | tr-d”[[a-zA-Z]]“对于这个特定的问题来说,这有点过分,但是expr是一个非常强大的匹配问题: expr $card : '[^0-9]*\([0-9]*\)' 如果你想把它放到另一个变量中: t=`expr $card : '[^0-9]*\([0-9]*\)'` expr命令可以做很多事情,但是这个冒号操作符——它与正则表达式的第一个参数相匹配——有很

如何从包含数字和字符的变量中仅获取数字

例如: 卡=3颗心


如何从变量$card中仅获取数字(3)?

echo 3Hart | tr-d”[[a-zA-Z]]“
对于这个特定的问题来说,这有点过分,但是
expr
是一个非常强大的匹配问题:

expr $card : '[^0-9]*\([0-9]*\)'
如果你想把它放到另一个变量中:

t=`expr $card : '[^0-9]*\([0-9]*\)'`

expr
命令可以做很多事情,但是这个冒号操作符——它与正则表达式的第一个参数相匹配——有很多用途。

不清楚Ako在
card=“a1b2c3”
expr$card:“[^0-9]*\([0-9]*\”
之后想要什么,可能Ako想要
123
。请在将来使用t=$(..)嵌套命令。