필자 스크립트에서 엔지니어링 번호를 비교하고 내 임계 값보다 높은 값을 유지해야합니다. 내 입력 파일 :AWK에서 엔지니어링 번호를 비교하는 동안 이상한 출력
8.63384676823803E-1439,1.59426879513427E-1589,6.30982615035767E-2151,2.28965973937211E-8,7.2400080082093E-470
내 코드는 다음과 같습니다 그러나
b=5; awk -v var=$b -F "," '{a=$var; if (a >= 1E-10) {a=$var} else {a=0}; print a}' inputfile
, 내가 a = 7.2400080082093E-470
을 얻을 b = 5 (or 1/3/4)
를 들어, 일반 비교 awk 'END {if (7.2400080082093E-470 >= 1E-10) print "wrong"}' inputfile
가 잘 작동하는 것 같다 반면.
모든 정보 주셔서 감사합니다.
제플린, 답변 해 주셔서 감사합니다! 그것은 나를 위해 일합니다. 그러나이 일반 숫자를 비교하면 잘 작동하기 때문에 (awk 'END {if (7.2400080082093E-470> = 1E-10)), 숫자가 변수에 래핑 된 경우에만 문제가 발생하는 이유는 아직 알지 못합니다. – MirrG
@MirrG 일반 숫자 리터럴을 사용하면 비교하기 전에 그냥 '0'으로 변환됩니다. 그 이유는 무엇입니까? (예 : "잘못된") else {인쇄 오른쪽}} 'inputfile' 'awk 'BEGIN {print 7.2400080082093E-470}''을'-M' 스위치와 함께 사용하십시오. – zeppelin