Bash 如何在第一个非零数字之前计算所有零
这就是问题所在:Bash 如何在第一个非零数字之前计算所有零,bash,shell,awk,grep,Bash,Shell,Awk,Grep,这就是问题所在: 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)也很好 欢迎提示,您可以这样做 $ printf '%e\n' -0.00092711066827 | sed 's/^.\+e-//' 04
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)也很好
欢迎提示,您可以这样做
$ printf '%e\n' -0.00092711066827 | sed 's/^.\+e-//'
04
$ echo -0.00092711066827 | grep -o '^[^1-9]\+' | grep -o '0' | wc -l
4
你可以这样做
$ echo -0.00092711066827 | grep -o '^[^1-9]\+' | grep -o '0' | wc -l
4
对于bash:
x='-0.00092711066827'
[[ $x =~ ([0.]+).* ]]
y="${BASH_REMATCH[1]//./}"
echo "${#y}"
输出:
4
4.
对于bash:
x='-0.00092711066827'
[[ $x =~ ([0.]+).* ]]
y="${BASH_REMATCH[1]//./}"
echo "${#y}"
输出:
4
4.
两种外壳解决方案(无外部程序):
两种外壳解决方案(无外部程序):
感谢Ignacio,我得到了
bash:printf:-0.00092711066827:无效数字0000000 e+00
,然后告诉printf
使用以句点为基点的区域设置LC\u NUMERIC=en\u US printf…
谢谢Ignacio,我得到了bash:printf:-0.00092711066827:无效数字0000000 e+00
然后告诉printf
使用以句点为基点的区域设置<代码>LC_NUMERIC=en_US printf…