将字符串转换为数字

将字符串转换为数字

我有以下 SNMP 命令

snmpget -v 1 -c COMMUNITY -t 2 HOST:161  1.3.6.1.4.1.24681.1.2.1.0 | awk '{print $4 $4}' | sed 's/.\(.*\)...../\1/'

返回一个字符串

9.10

十进制的百分比值是多少。

我想将其乘以 10 使其正确:

91.0

我怎样才能用上面的命令来做到这一点?

谢谢!约翰


snmpget命令输出字符串

iso.3.6.1.4.1.24681.1.2.1.0 = STRING: "9.10 %"

答案1

使用awk这样的一个命令:

# Use two sepatators, <space> and ", so you catch exactly the number.
# Multiply by 10
# `printf` allows you to format numbers in many ways, in this case, 1 decimal

str='iso.3.6.1.4.1.24681.1.2.1.0 = STRING: "9.10 %"'

$ echo "$str" | awk -F'[ "]' '{ printf "%.1f\n", $5*10 }'
91.0

或者正如所指出的@斯特凡·查泽拉斯,这也有效:

echo "$str" | awk -F \" '{ printf "%.1f\n", $2*10 }'

printf 格式的修饰符

%e、%E、%f、%F
小数点右侧的位数。`

相关内容