Подсчитайте количество цифр в переменной bash
У меня есть ряд num=010
. Я хотел бы подсчитать количество цифр, содержащихся в этом номере. Если количество цифр выше определенного числа, я хотел бы сделать некоторую обработку.
В приведенном выше примере количество цифр равно 3.
спасибо!
5 ответов
предполагая, что переменная содержит только цифры, то консоль уже не то, что вы хотите здесь с длиной Расширение Параметров Оболочки.
$ var=012
$ echo "${#var}"
3
в 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
предполагая, что переменная x является "определенным числом" в вопросе
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
используя grep
:
s="string934 56 96containing digits98w6"
echo "$s" |grep -o "[0-9]" |grep -c ""
10