[awk] awk에서 문자열 비교

awk에서 000000e2와000000e5를 비교하면, 두 개가 같은 것으로 나온다.


* 테스트 방법
- test.txt 파일의 한 줄에 000000e2와 000000e5를 넣어 둔다.
000000e2 000000e5

- 다음 명령을 실행한다.
gawk ‘{
 if($1 == $2)
   printf(“%s is equal to %s\n”, $1, $2);
 else
 printf(“%s is not equal to %s \n”, $1, $2);
}’ test.txt

- 명령을 실행하면 다음 결과가 출력된다.
000000e2 is equal to 000000e5

- 이유는 000000e2와 000000e5를 숫자로 간주하기 때문이다. 즉, e를 10의 n승을 곱하는 것으로 간주하여, 000000e2는 0 * 100 = 0 , 000000e5는 0 * 100000 = 0이 된다.


- test.txt에 다음을 넣어도 동일한 것으로 간주한다. 둘다 숫자 1로 간주하기 때문이다. 

0001    1


- 문자열로 간주하여 다른 값으로 취급하기 위해서는, 다음과 같이 숫자가 아닌 "문자열" 형태로 비교하면 된다. 문자열이 되기 위해서는 ""를 사용한다.
gawk ‘{
 if($1 == “”$2)
   printf(“%s is equal to %s\n”, $1, $2);
 else
   printf(“%s is not equal to %s \n”, $1, $2);
}’ test.txt

* 참고 자료
http://osdir.com/ml/gnu.utils.bugs/2003-01/msg00088.html

댓글

이 블로그의 인기 게시물

utf-8과 utf8