这是问题所在:
echo -0.00092711066827 | grep -o 0
0
0
0
0
0
echo -0.00092711066827 | grep -o 0 | wc -l
5
但是我需要在第一个非零数字之前计算全零,在这种情况下,在数字9之前全部为零(例如,4个零)。知道如何计算所有这4个零加上第一个非零整数(在这种情况下它将是4个零加上9)也很好。
欢迎提示,
答案 0 :(得分:2)
你可以这样做,
$ echo -0.00092711066827 | grep -o '^[^1-9]\+' | grep -o '0' | wc -l
4
答案 1 :(得分:2)
使用bash:
x='-0.00092711066827'
[[ $x =~ ([0.]+).* ]]
y="${BASH_REMATCH[1]//./}"
echo "${#y}"
输出:
4
答案 2 :(得分:1)
$ printf '%e\n' -0.00092711066827 | sed 's/^.\+e-//'
04
答案 3 :(得分:1)
两个shell解决方案(无外部程序):
s="-0.00092711066827"
a="${s%%[1-9]*}" ; # cut at the first non-zero digit.
a="${a//[^0]/}"; # remove all non-zero characters.
echo "${#a}" # print the count of zeros.
b="$(LC_ALL=C printf '%e' "$s")" # convert to Scientific notation.
echo "$((${b##*e-}+0))" # convert exponent to number.