awk는 숫자를 구문 분석할 때 항상 후행 문자를 삭제합니까?

awk는 숫자를 구문 분석할 때 항상 후행 문자를 삭제합니까?

awk백분율 숫자(후행 "%" 포함)를 구문 분석하고 특정 백분율을 초과하는지 확인해야 합니다 .

일반적인 구문 분석에서는 후행 문자를 무시합니다. 예를 들면 다음과 같습니다.

% echo "99%" | awk '{print ($1 + 0)}'
99

물론 e및 숫자로 구성된 문자열의 경우는 제외됩니다.

echo "99e4" | awk '{print ($1 + 0)}'                 
990000

이 동작은 안정적이고 다른 s에도 동일합니까 awk, 아니면 명시적으로 제거하는 것이 권장됩니까 %?

답변1

예, 이는 AWK 구현 전체에서 안정적인 동작입니다. 에 기록되어 있어요GNU AWK 매뉴얼다음과 같이:

문자열의 숫자 접두사를 숫자( "2.5"2.5, "1e3"1,000, "25fix"25)로 해석하여 문자열을 숫자로 변환합니다. 유효한 숫자로 해석될 수 없는 문자열은 0으로 변환됩니다.

또한 비록 더 장황하기는 하지만 문서화하고 있습니다.POSIX 사양에서awk.

관련 정보