문자열을 숫자로 변환

문자열을 숫자로 변환

다음 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

아니면 지적한대로@stefanchazeras, 이는 또한 작동합니다:

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

printf 형식 수정자

%e, %E, %f, %F
소수점 오른쪽의 자릿수입니다. `

관련 정보