我有一个数字 num=010
。我想要计算这个数字中包含的数字数量。如果数字数量超过特定值,我想要进行一些处理。
在上面的示例中,数字数量为3。
谢谢!
$ var=012
$ echo "${#var}"
3
var
被分配为命令的结果,则此方法无效;相反,它返回命令的长度。请改用@anubhava的答案。 - Peter Kionga-Kamau在BASH中,您可以这样做:
num='a0b1c0d23'
n="${num//[^[:digit:]]/}"
echo ${#n}
5
使用 awk,您可以做到:
num='012'
awk -F '[0-9]' '{print NF-1}' <<< "$num"
3
num='00012'
awk -F '[0-9]' '{print NF-1}' <<< "$num"
5
num='a0b1c0d'
awk -F '[0-9]' '{print NF-1}' <<< "$num"
3
chars=`echo -n $num | wc -c`
if [ $chars -gt $x ]; then
....
fi
这适用于任意包含数字和非数字字符的字符串:
ndigits=`echo $str | grep -P -o '\d' | wc -l`
演示:
$ echo sf293gs192 | grep -P -o '\d' | wc -l
6
sed
:s="string934 56 96containing digits98w6"
num=$(echo "$s" |sed 's/[^0-9]//g')
echo ${#num}
10
s="string934 56 96containing digits98w6"
echo "$s" |grep -o "[0-9]" |grep -c ""
10
${#num}
做你想要的事吗? - Etan Reisner